java concurrent笔记
Executor Interfaces
三种线程管理接口,所有任务都需要提交给它们之一,才能得到执行:
Executor
——启动(或执行)新任务ExecutorService
——扩展Executor
,支持管理任务和自身生命周期ScheduledExecutorService
——扩展ExecutorService
,支持日程(或计划任务)
ExecutorService
管理任务的生命周期体现在通过submit
方法返回的Future
类上,Future
定义有取消任务和获取任务结果的方法。 ScheduledExecutorService
中的日程指的是可以延时或周期性执行任务。文章图片
Thread Pools
上面的线程管理接口(executor)的实现有:
ThreadPoolExecutor
——维护用于任务执行需要的线程池ScheduledThreadPoolExecutor
——支持日程的ThreadPoolExecutor
Executors
工厂类来创建配置。文章图片
Fork/Join
为了更好地利用现代计算机的多核架构,提供Fork/Join型线程池:
ForkJoinPool
。如果任务可以分解为更小的多个子任务,并允许子任务并行运行,最终将子任务结果合并便为原任务结果。对于这种情况就可以使用ForkJoinPool
来实现。该线程池提供了一种在多线程下实现分治算法的方案。在类Arrays
中的parallelSort()
方法正是其应用场景。 运行在
ForkJoinPool
中的任务由特殊的类来描述,并在特殊的线程中运行:ForkJoinTask
——可分解任务ForkJoinWorkerThread
——运行ForkJoinTask
任务的线程
文章图片
【java concurrent笔记】Written with StackEdit.
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- Android中的AES加密-下
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 【读书笔记】贝叶斯原理
- 【韩语学习】(韩语随堂笔记整理)
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题