并发编程艺术-10
2018-04-26 本文已影响0人
e86dab508bc1

本文主要介绍的是Java 执行机制 Executor 框架, 采用工作单元和执行单元分离开来。
- 任务的两级调度:

- 框架结构
(1) 任务
(2) 任务的执行方
(3) 异步计算的结果
- 框架的主要成员:
(1) ThreadPoolExecutor: 通常有Executors 工厂类来创建,有以下三种。
SingleThreadExecutor: 单个线程执行,常用在需要保证顺序,并且不会有多个线程时活动的场景,使用的是LinkedBlockingQueue
FixedThreadPool: 创建使用固定线程数,常用语需要限制资源管理,比如负载比较重的服务器,一定量的数据库连接,使用的是LinkedBlockingQueue
CachedThreadPool; 根据需要进行创建新的线程,大小无界的,所以要注意使用场景一般都是短期异步的任务,一般用在负载比较轻的服务器上。 使用的是SynchronizedQueue。
(2) ScheduledThreadPoolExecutor: 可以创建SingleThreadPoolExecutor和 ScheduleThreadPoolExecutor . 使用的是DelayQueue

(3) ThreadPoolExecutor 一些常见的参数配置:
corePool : 核心线程数大小
maximumPool : 最大线程大小
BlockingQueue : 用来保存等待的任务队列
RejectedExecutionHandler : 当线程池已关闭或者饱和的时候,调用的Handler。
FutureTask 类 : 在 JDk 1.7 版本中,使用的是 AQS 模板方法,在 1.8 之后, 直接在内部维护status,直接使用CAS 来进行维护status.