本文已参与「新人创作礼」活动,一起开启掘金创作之路。
线程池的体系结构
java.util.concurrent.Executor : 负责线程的使用与调度的根接口
|--ExecutorService 子接口:线程池的主要接口
|--ThreadPoolExecutor 线程池的实现类
|--ScheduledExecutorService 子接口:负责线程的调度
|--ScheduledThreadPoolExecutor :继承 ThreadPoolExecutor, 实现 ScheduledExecutorService
1线程池的工作原理
1.1线程池的核心组件和核心类
Java 线程池主要由以下4个核心组件组成:
- 线程池管理器(用于创建并管理线程池)
- 工作线程(线程池中执行具体任务的线程)
- 任务接口(用于定义工作线程的调度和执行策略,只有线程实现了该接口,线程中的任务才能够被线程池调度)
- 任务队列(存放待处理的任务,新的任务将会不断被加入到队列中,执行完成的任务将被从队列中移除)
ThreadPoolExecutor 是构建线程池的核心方法,定义如下:
// ThreadPoolExecutor 的构造方法
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) {
........................
}
参数说明
| 序号 | 参数 | 说明 |
|---|---|---|
| 1 | corePoolSize | 核心线程数量 |
| 2 | maximumPoolSize | 最大线程数量 |
| 3 | keepAliveTime | 当前线程数大于corePoolSize时,空闲线程的存活时间 |
| 4 | unit | keepAliveTime的时间单位 |
| 5 | workQueue | 任务队列,被提交但尚未被执行的任务存放的地方 |
| 6 | threadFactory | 线程工厂,用于创建线程 |
| 7 | handler | 任务拒绝策略 |