java线程池--核心线程怎么保证的一直存活的!!!

  1. 线程池创建后如果执行executor.prestartCoreThread();会提前设置核心线程数

  2. 添加工作任务

  3. 线程池没停止并且小于核心线程数

  4. 将线程添加到线程工作组

  5. 查看 w = new Worker(firstTask); 创建的线程内部的run方法 这里创建出工作线程

  6. 用工作任务生成个线程,当执行工作任务的时候其实执行的是runWorker方法

  7. 当需要执行工作中的runnable对象的时候, 如果当前的runnable对象不为空,或者工作队列中有就执行

  8. 执行线程池的execute方法会传入runnable对象,并且加入工作队列

  9. getTask方法获取Runnable对象是关键,如果有超时用队列的方法,如果没超时用队列的take方法(使用的是cas自旋实现的无锁机制)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章