一、线程池核心原理
核心组成:
- 任务队列:缓存待执行任务
- 工作线程:从队列取任务执行
- 线程管理:控制线程数量、回收空闲线程
公式:
线程池 = 任务队列 + 工作线程
| 组件 | 作用 |
|---|---|
| 任务队列 | 缓存待执行任务 |
| 工作线程 | 从队列取任务执行 |
| 线程管理 | 控制线程数量、回收空闲线程 |
二、线程池处理流程
- 线程数 < corePoolSize → 创建新线程执行
- 线程数 >= corePoolSize → 任务加入队列等待
- 队列满 + 线程数 < maximumPoolSize → 创建临时线程
- 队列满 + 线程数 = maximumPoolSize → 拒绝任务
三、线程池 7 大参数
new ThreadPoolExecutor(
int corePoolSize, // 1. 核心线程数
int maximumPoolSize, // 2. 最大线程数
long keepAliveTime, // 3. 空闲线程存活时间
TimeUnit unit, // 4. 时间单位
BlockingQueue<Runnable> workQueue, // 5. 任务队列
ThreadFactory threadFactory, // 6. 线程工厂
RejectedExecutionHandler handler // 7. 拒绝策略
);
| 参数 | 说明 | 示例值 |
|---|---|---|
| corePoolSize | 核心线程数,常驻线程数 | 10 |
| maximumPoolSize | 最大线程数,弹性扩展上限 | 50 |
| keepAliveTime | 空闲线程存活时间 | 60 |
| unit | 时间单位 | TimeUnit.SECONDS |
| workQueue | 任务队列 | new ArrayBlockingQueue<>(100) |
| threadFactory | 线程创建工厂 |


