线程池ThreadPoolExecutor
线程池生命周期状态
RUNNING:接收新任务并执行队列中的任务
SHUTDOWN:不会接收新任务,但会继续处理队列中的任务
STOP:不接受新任务,不处理队列中的任务,并中断正在进行的任务
TIDYING:所有的任务都已终止,工作线程数为零,在转为此状态后可以执行一个terminated()的钩子函数
TERMINATED:terminated()的钩子函数执行完后,转为TERMINATED状态
常见的线程池种类
| 常见的线程池 | 特性 | 核心线程 | 最大线程数 | 使用的任务队列 |
|---|---|---|---|---|
| FixedThreadPool | 定长 | 指定 | 等于核心线程数 | LinkedBlockingQueue |
| SingleThreadPool | 单个 | 1 | 1 | LinkedBlockingQueue |
| CachedThreadPool | 不定长 | 0 | Integer.MAV_VALUE | SynchronousQueue |
| SecudleThreadPool | 周期性 执行任务的线程池 |
指定 | Integer.MAV_VALUE | DelayedWorkQueue |
拒绝任务策略(默认使用的AbortPolicy)
AbortPolicy: 抛出RejectedExecutionException异常
DiscardPolicy: 什么都不做,不执行,也不抛异常
DiscardOldestPolicy: poll出当前第一个元素,再次执行execute提交任务方法
CallerRunsPolicy : 直接执行Runnable的run方法

浙公网安备 33010602011771号