java多线程之-线程池状态
1.背景
这一节我们来学习一下线程池状态.....
2.线程池状态
状态名称 | 高3位 | 是否接受新任务 | 是否处理队列中的任务 | 说明 |
RUNNING | 111 | 是 | 是 | 线程池正常运行状态 |
SHUTDOWN | 000 | 否 | 是 | 不接收新的任务,但是会处理完队列中的任务 |
STOP | 001 | 否 | 否 | 会中断正在执行的任务,并且丢弃队列中的任务 |
TIDYING | 010 | 否 | 否 | 任务执行完成,活动线程数为0,即将进入终结状态 |
TERMINATED | 011 | 否 | 否 | 终结状态 |
3.线程池关闭相关API
public static void main(String[] args) { ExecutorService pool = Executors.newFixedThreadPool(2); /** *线程池状态变为 SHUTDOWN *- 不会接收新任务 *- 但已提交任务会执行完 *- 此方法不会阻塞调用线程的执行 */ // pool.shutdown(); /** * 线程池状态变为 STOP * - 不会接收新任务 * - 会将队列中的任务返回 * - 并用 interrupt 的方式中断正在执行的任务 */ // pool.shutdownNow(); // 不在 RUNNING 状态的线程池,此方法就返回 true pool.isShutdown(); // 线程池状态是否是 TERMINATED pool.isTerminated(); }