线程池线程何时减少原创
3年前
7473210
以下源码来自于jdk8
一、当没有获取到任务,则会减少工作线程
二、获取任务时,线程池中线程数减少条件:
1、线程池状态为stop
2、线程池状态为shutdown,且任务队列为空
3、当允许核心线程超时或工作线程数大于核心线程数时,并且获取任务超时,只要工作线程数大于1,或者任务队列为空,就能减少工作线程数(并发情况下,只会有一个能修改成功)
备注:
1、当允许核心线程超时或工作线程数大于核心线程数时,获取任务是超时等待,否则是阻塞等待。
2、ThreadPoolExecutor中getTask()方法源码
3、线程池状态变更图
注意点:
1、decrementWorkerCount和compareAndDecrementWorkerCount的区别
decrementWorkerCount:减少一个工作线程
compareAndDecrementWorkerCount:减少一个工作线程,若是并发,则只会有一个修改成功
欢迎各位批评指正,共同学习进步^_^😊
点赞收藏
分类: