并发编程艺术-10

本文主要介绍的是Java 执行机制 Executor 框架, 采用工作单元和执行单元分离开来。

  1. 任务的两级调度:
  1. 框架结构

(1) 任务

(2) 任务的执行方

(3) 异步计算的结果

  1. 框架的主要成员:

(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.

你可能感兴趣的:(并发编程艺术-10)