文章>线程池线程何时减少>

线程池线程何时减少

青叶竹
java
ThreadPoolExecutor
1月前

以下源码来自于jdk8

一、当没有获取到任务,则会减少工作线程
二、获取任务时,线程池中线程数减少条件:
1、线程池状态为stop
2、线程池状态为shutdown,且任务队列为空
3、当允许核心线程超时或工作线程数大于核心线程数时,并且获取任务超时,只要工作线程数大于1,或者任务队列为空,就能减少工作线程数(并发情况下,只会有一个能修改成功)

备注:
1、当允许核心线程超时或工作线程数大于核心线程数时,获取任务是超时等待,否则是阻塞等待。
2、ThreadPoolExecutor中getTask()方法源码
image.png


3、线程池状态变更图
image.png


注意点:
1、decrementWorkerCount和compareAndDecrementWorkerCount的区别
decrementWorkerCount:减少一个工作线程
compareAndDecrementWorkerCount:减少一个工作线程,若是并发,则只会有一个修改成功


欢迎各位批评指正,共同学习进步^_^😊

1162 阅读
请先登录,再评论

评论列表

暂无回复,快来写下第一个回复吧~