【编者的话】在Java中,使用线程池来异步执行一些耗时任务是非常常见的操作。最初我们一般都是直接使用new Thread().start的方式,但我们知道,线程的创建和销毁都会耗费大量的资源
2025年05月22日
【编者的话】在Java中,使用线程池来异步执行一些耗时任务是非常常见的操作。最初我们一般都是直接使用new Thread().start的方式,但我们知道,线程的创建和销毁都会耗费大量的资源
2025年05月22日
前文java中的阻塞队列和非阻塞队列我们介绍了常用的几种队列,队列的使用很广泛,特别是一些需要生产消费模式的场景以及需要对全局的集合进行操作的场景。今天我们来讲讲其中的一种应用——线程池。
2025年05月22日
在Java 16中引入的record类,在后续版本中得到了进一步增强。记录类现在支持更多功能,比如可以实现接口。这使得记录类不仅限于简单的数据载体,还能承担更多的业务逻辑。例如,你可以通过new关键字直接实例化记录类,并且可以在其主体内定义静态方法、静态字段以及静态初始化块。
2025年05月22日
execute(Runnable command)接口是无返回值的,与之相对应的是一个有返回值的接口Future submit(Callable task),这点在前面已经提到。
2025年05月22日
我们最常使用的Executors实现创建线程池使用线程主要是用上述类图中提供的类。在上边的类图中,包含了一个Executor框架,它是一个根据一组执行策略的调用调度执行和控制异步任务的框架,目的是提供一种将任务提交与任务如何运行分离开的机制。它包含了三个executor接口:
2025年05月22日
在Java编程的世界里,线程池就像一位高效的调度员,它能够帮助我们管理线程的创建、执行和销毁,从而提高程序的性能和稳定性。想象一下,如果没有线程池,每次执行任务都需要创建一个新的线程,这不仅耗时,还会导致系统资源的浪费。而有了线程池,我们可以预先创建好一定数量的线程,然后复用它们来处理任务,这样既节省了时间,也节约了资源。
2025年05月22日
有些业务请求,属于耗时操作,需要加锁,防止后续的并发操作,同时对数据库的数据进行操作,需要避免对之前的业务造成影响。
2025年05月22日
通常任务调度的程序是集成在应用中的,比如:优惠卷服务中包括了定时发放优惠卷的的调度程序,结算服务中包括了定期生成报表的任务调度程序
2025年05月22日
ScheduledThreadPoolExecutor 是 Java 中用于执行定时任务和周期性任务的线程池实现类,它是 ThreadPoolExecutor 的子类,并实现了 ScheduledExecutorService 接口。它非常适合用来替代传统的 Timer 类,尤其是在高并发、需要调度多个任务的场景中。
2025年05月22日
在平时的业务中我们可能会碰到这样的需求,用户A将任务分配给用户B,如果30天后用户B还没有处理这个任务,那么系统自动将这个任务转发给用户C,或者将任务退回给任务A。