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

线程池线程何时减少原创

1年前
586819

以下源码来自于jdk8

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

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


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


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


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

点赞收藏
青叶竹
请先登录,查看1条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

记一次“雪花算法”造成的生产事故的排查记录

记一次“雪花算法”造成的生产事故的排查记录

重新认识下JVM级别的本地缓存框架Guava Cache——优秀从何而来

重新认识下JVM级别的本地缓存框架Guava Cache——优秀从何而来

解读JVM级别本地缓存Caffeine青出于蓝的要诀 —— 缘何会更强、如何去上手

解读JVM级别本地缓存Caffeine青出于蓝的要诀 —— 缘何会更强、如何去上手

解读JVM级别本地缓存Caffeine青出于蓝的要诀2 —— 弄清楚Caffeine的同步、异步回源方式

解读JVM级别本地缓存Caffeine青出于蓝的要诀2 —— 弄清楚Caffeine的同步、异步回源方式

单服务并发出票实践

单服务并发出票实践

刺激,线程池的一个BUG直接把CPU干到100%了。

刺激,线程池的一个BUG直接把CPU干到100%了。

9
1