Executor Interfaces
三种线程管理接口,所有任务都需要提交给它们之一,才能得到执行:
-
Executor——启动(或执行)新任务 -
ExecutorService——扩展Executor,支持管理任务和自身生命周期 -
ScheduledExecutorService——扩展ExecutorService,支持日程(或计划任务)
其中ExecutorService管理任务的生命周期体现在通过submit方法返回的Future类上,Future定义有取消任务和获取任务结果的方法。 ScheduledExecutorService中的日程指的是可以延时或周期性执行任务。
Thread Pools
上面的线程管理接口(executor)的实现有:
-
ThreadPoolExecutor——维护用于任务执行需要的线程池 -
ScheduledThreadPoolExecutor——支持日程的ThreadPoolExecutor
上面所示的Executor可以通过Executors工厂类来创建配置。
Fork/Join
为了更好地利用现代计算机的多核架构,提供Fork/Join型线程池:ForkJoinPool。如果任务可以分解为更小的多个子任务,并允许子任务并行运行,最终将子任务结果合并便为原任务结果。对于这种情况就可以使用ForkJoinPool来实现。该线程池提供了一种在多线程下实现分治算法的方案。在类Arrays中的parallelSort()方法正是其应用场景。
运行在ForkJoinPool中的任务由特殊的类来描述,并在特殊的线程中运行:
-
ForkJoinTask——可分解任务 -
ForkJoinWorkerThread——运行ForkJoinTask任务的线程
Written with StackEdit.