Fixed线程池原理
2021-12-15 09:41:17 11 举报
线程池任务提交
作者其他创作
大纲/内容
创建非核心线程
poll()/take()
线程
run(){ runWorker()}
while(getTask() !=null)
3.加独占锁提交到workers中
任务队列 BlockingQueue<Runnable>
拒绝策略
2.尝试添加到队列中队列是否已满
workers线程池HashSet<Worker>
否
任务
是
执行目标任务Runnable
execute()
任务Runnable
创建核心线程
1.CAS递增线程数量ctl
4.Worker.thread.start()
2.创建WorkerAQS 子类
1.线程数<corePoolSize
Worker.runWorker()循环从队列中获取任务,执行任务
addWorker()
Thread:ThreadFactory.newThread(Worker) Runnable:firstTask
调度执行
小于
3.线程总数<maximumPoolSize
创建失败
收藏
收藏
0 条评论
下一页