ThreadPoolExecutor - getTask() - 流程分析
2019-05-23 13:56:00 0 举报
ThreadPoolExecutor - getTask() - 流程分析
作者其他创作
大纲/内容
以无限时阻塞方式从队列获取数据r = workQueue.take()
开始
否
wc > 1
是
任务队列是否为空
是否是限时获取(timed = true)
操作是否成功
null
限时阻塞
无限时阻塞
timedOut = true
是否超时(timeout = true)
获取到数据
结束
获取线程运行状态,计为rs
wc > maximumPoolSize
CAS操作线程池Worker总数减1
线程池是否处于运行状态rs == RUNNING
作用:Did the last poll() time out?
执行是否成功
获取超时
获取线程池中worker的数量,计为wc
r
rs == SHUTDOWN
任务队列
任务队列为是否为空
设置timedOut = false
操作线程池Worker总数减1
获取任务获取是否有时限限制,标志计为timed
boolean timed = allowCoreThreadTimeOut || wc > corePoolSize;
0 条评论
下一页