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

 

完美!

posted @ 2022-02-22 06:51  李东平|一线码农  阅读(151)  评论(0编辑  收藏  举报