ThreadPoolExecutor 之 addWorker
2018-11-14 22:57:33 0 举报
ThreadPoolExecutor类的addWorker函数
作者其他创作
大纲/内容
判断Worker线程数法语等于最大容量或者根据核心判断是否大于等于运行的线程数
null
判断线程状态是否非运行状态且不满足SHUTDOWN状态下非初始化不为null且任务队列不为空
根据workerAdded状态启动线程,设置workerStarted为true
抛出异常
判断thread null
非null
false
线程池状态正在运行或者SHOWTDOWN时,初始化任务为null
return false
加入线程set
执行成功
true
启动失败则回滚
发生变化则重新执行
unlock
更新largestPoolSize并设置workerAdded为true
执行失败
start(运行的任务,是否加入核心线程)
返回workerStarted
线程正在运行
获得线程池的自旋锁并lock
新建一个Worker并从worker里获取Thread
未发生变化则重试
尝试将ctl原子加1
判断线程池的状态是否发生了变化
0 条评论
下一页