ThreadPoolExecutor - tryTerminate() - 流程分析
2019-05-23 13:56:15 0 举报
ThreadPoolExecutor - tryTerminate() - 流程分析
作者其他创作
大纲/内容
结束
是
操作是否成功
否
线程池在运行中(ctl < SHUTDOWN)
interruptIdleWorkers(ONLY_ONE)
runState = SHUTDOWN
CAS设置ctl值为TIDYING
解锁
是否还有worker线程
执行awaitTermination方法的线程在等待通知
terminated()
开始
上锁
这里注意一下:状态设置为描述所示,同时Worker的数量为设置为0
中断一个Worker线程,这个源码上的解释是这样的:interrupts an idle worker to ensure that shutdown signals propagate中断一个空闲线程,使其从WAITTING状态变为RUNNING状态,这时候调用getTask方法不再阻塞,线程从while循环中退出,继续执行会调用processWorkerExit,这个方法会调用tryTerminate()方法,实现传播
设置ctl值为TERMINATED
ctl == TIDYING 或ctl == TERMINATED
任务队列是否为空
获取ctl
termination.signalAll()
0 条评论
下一页