码迷,mamicode.com
首页 > 其他好文 > 详细

ThreadPoolExecutor 的基本原理

时间:2020-04-07 15:45:58      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:包括   管理   executor   exe   基本   大于   unit   resize   pool   

先说下 ThreadPoolExecutor 的基本原理:
1. 当提交一个任务时,如果线程数没有达到coreSize,那么就会新建一个线程,并绑定该任务,直到数量到达coreSize前都不会重用之前的线程
2.到达后,提交的任务都会放到一个等待队列中进行等待,线程池中的线程会使用take()阻塞的从等待队列拿任务
3.当队列有界,并且线程不能及时取走队列中的任务,等待队列有可能会满,那么线程池将会创建临时线程来执行任务
4.临时线程 通过poll(keepAliveTime,timeUnit)来执行任务,如果到了keepAliveTime还取不到,那么会被回收掉,临时线程的数量不能大于
maxPoolSize - coreSize
5.当线程数到达maxSize后,将会执行拒绝策略RejectedExecutionHandler,包括抛异常,静默拒绝,抛弃最old任务,使用原远程执行等策略

知道了原理你大概就知道线程被如何管理了
当一个task执行完,如果线程数小于coreSize,那么这个线程就会一直存在线程池中,
如果是临时线程,在等待keepAliveTime后,将会被回收掉

ThreadPoolExecutor 的基本原理

标签:包括   管理   executor   exe   基本   大于   unit   resize   pool   

原文地址:https://www.cnblogs.com/zjm-1/p/12653532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!