线程池运行流程方法调用
2020-09-09 11:07:49 0 举报
线程池运行时方法调用
作者其他创作
大纲/内容
3、调用workers.add(w)方法
5、执行run方法
6、执行runWorker(this)方法
2、调用addWorker()方法
ThreadPoolExecutor.Worker
1、客户端创建线程池对象后,调用execute方法提交一个Runnable对象2、execute方法内会调用addWorker方法创建一个Worker对象3、addWorker方法在workers.add(w)成功之后,会调用 Worker.Thread.start() 方法,这时调用的就是Worker对象内的run方法4、Worker对象内的run方法实际调用的是runWorker方法5、runWorker方法中有while循环,不断调用getTask方法获取任务,新任务通过task.run方法执行6、getTask方法中通过BlockQueue的take方法来获取队列中的任务,如果队列为空,则一直阻塞当前线程因此,线程池通过队列的 take 方法阻塞核心线程(Worker)的 run 方法从而保证核心线程不被销毁的。
1、调用execute()方法
ThreadPoolExecutor
7、while循环调用getTask()方法
client
4、调用t.start()方法
8、调用task.run()方法
0 条评论
下一页