线程池工作过程
2022-03-17 00:23:28 0 举报
线程池工作过程
作者其他创作
大纲/内容
启动(核心)工作线程worker.start()
是
execute(runnable)execute(callable)下面以runnable为例
线程入口run方法runWorker()
worker
Runnable
执行task任务task.run()
获取task任务getTask()
submit(runnable)submit(callable)
task任务是否为空
将Runnable添加到任务队列 workQueue.offer()
否
(corePoolSize)
Worker Exit()
终止策略(默认)AbortPolicy
是否取到task任务
创建(核心)工作线程(addWorker)
等待队列是否还有可用空间(workQueue)
(maxnumPoolSize)
存
创建(普通)工作线程(addWorker)
取
线程移除processWorkerExit()
等待队列也满了
核心线程数满了
工作线程数是否小于核心线程数(corePoolSize)
调用者运行策略CallerRunsPolicy
工作线程数是否小于最大线程数(maximumPoolSize)
自定义拒绝策略rejectedExecution
丢弃最早未处理策略DiscardOldestPolicy
丢弃新提交的策略DiscardPolicy
0 条评论
下一页