线程池生命周期管理
上一期讲了线程池生命周期管理的任务管理,对于线程池来说,任务管理和线程管理是它必须关注的事情,而线程管理比任务管理则更复杂。
线程管理
Worker线程(工作线程)
线程池为了掌握线程的状态并维护线程的生命周期,设计了线程池内的工作线程Worker,先看一下源码:
1 | private final class Worker extends AbstractQueuedSynchronizer implements Runnable{ |
Worker这个线程,实现了Runnable接口,并持有一个线程thread变量,一个初始化的任务firstTask,thread是在调用构造方法时通过ThreadFactory来创建的线程,可以用来执行任务;firstTask用它来保存传入的第一个任务,这个任务可以有也可以为null。如果这个值时非空的,那么线程就会在启动初期立即执行这个任务,也就是对应核心线程(corePool)创建时的情况,如果这个值时null,那么就需要创建一个线程去执行任务列表(workQueue)中的任务,也就是非核心线程的创建。