线程池主要解决了2个问题:

  1. 复用线程,降低线程创建销毁的开销;2. 线程资源限制和资源管理 —— 限制线程数,动态增加减少线程。

继承AbstractExecutorService, 一个int变量维护2个状态, 高3位线程池状态, 低29位(32位机)线程数;
COUNT_BIT = Integer.SIZE- 3
移位操作表示线程池的5种状态:
000 SHUTDWON 拒绝接受任务,要处理完队列中的任务
001 STOP 中断正在处理的任务
010 TIDYING: 整理中: 队列中任务处理完并且线程数为0
011 TERMINATED 已终止
111 运行中(默认)

  1. 线程池状态切换:
    2.1 运行中 -> SHUTDOWN shutdown(); // 拒绝接受任务,要处理完队列中的任务
    2.2 运行中 -> SHUTDOWN -> STOP shutdownNow(); // 拒绝接受任务,丢弃队列中的任务
posted on 2020-10-19 23:40  lix_y  阅读(45)  评论(0编辑  收藏  举报