ThreadPoolExecutor - processWorkerExit - 执行流程
2019-05-23 13:56:32 0 举报
ThreadPoolExecutor - processWorkerExit - 执行流程
作者其他创作
大纲/内容
否
线程池当前状态是否是RUNNING或SHUTDOWN
是
Worker是否是意外地终止(completedAbruptly = true)
min == 0
结锁
获取ctl
结束
min = 1
CAS操作线程池Worker总数减1
从Worker集合中移除w
上锁
任务队列是否为空
tryTerminate()
int min = allowCoreThreadTimeOut ? 0 : corePoolSize;
操作是否成功
开始
入参Worker对象,记为w;是否意外终止标志,计为completedAbruptly
根据allowCoreThreadTimeOut确定线程池允许的Worker数量的最小值,记为min
当前线程池的Worker数量是否大于或等于线程池允许的最小值
将w完成的任务数加到线程池完成的任务总数中
0 条评论
回复 删除
下一页