锐客网

java concurrent笔记

Executor Interfaces
三种线程管理接口,所有任务都需要提交给它们之一,才能得到执行:

  • Executor——启动(或执行)新任务
  • ExecutorService——扩展Executor,支持管理任务和自身生命周期
  • ScheduledExecutorService——扩展ExecutorService,支持日程(或计划任务)
其中ExecutorService管理任务的生命周期体现在通过submit方法返回的Future类上,Future定义有取消任务和获取任务结果的方法。
ScheduledExecutorService中的日程指的是可以延时或周期性执行任务。
java concurrent笔记
文章图片

Thread Pools
上面的线程管理接口(executor)的实现有:
  • ThreadPoolExecutor——维护用于任务执行需要的线程池
  • ScheduledThreadPoolExecutor——支持日程的ThreadPoolExecutor
上面所示的Executor可以通过Executors工厂类来创建配置。
java concurrent笔记
文章图片

Fork/Join
为了更好地利用现代计算机的多核架构,提供Fork/Join型线程池:ForkJoinPool。如果任务可以分解为更小的多个子任务,并允许子任务并行运行,最终将子任务结果合并便为原任务结果。对于这种情况就可以使用ForkJoinPool来实现。该线程池提供了一种在多线程下实现分治算法的方案。在类Arrays中的parallelSort()方法正是其应用场景。
运行在ForkJoinPool中的任务由特殊的类来描述,并在特殊的线程中运行:
  • ForkJoinTask——可分解任务
  • ForkJoinWorkerThread——运行ForkJoinTask任务的线程
java concurrent笔记
文章图片

【java concurrent笔记】Written with StackEdit.


    java