源码 - ThreadPoolExecutor.execute(Runnable)
2020-06-28 10:48:18 2 举报
JUC源码,ThreadPoolExecutor.execute(Runnable)方法执行流程图及源码说明
作者其他创作
大纲/内容
addWorker()失败
非RUNNING状态
reject()方法拒绝任务
offer()成功
worker线程数是否为0?
第一次检查之后可能由线程消亡,也可能线程池被关闭。
return
worker线程数 != 0
offer()方法将任务加入队列
worker线程数==0
创建core线程
比较worker线程数和corePoolSize值
RUNNING状态
offer()失败,队列已满
addWorker()成功
获取ctl值
worker线程数 >= corePoolSize
线程池是否RUNNING状态?
addWorker()失败,线程池已关闭或者已满
再次获取ctl值进行双重检查(double-check)
corePoolSize允许为0
remove()失败
回滚队列,remove()方法删除原任务
worker线程数 < corePoolSize
remove()成功
0 条评论
回复 删除
下一页