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();
    }

 

完美!

上一篇:线程池(创建方法、七大参数、四种拒绝策略、最大线程数的设置、在Springboot中使用自定义线程池)


下一篇:Linux - 查看、修改、更新系统时间(自动同步网络时间)