ThreadPoolExecutor:

ctl:Integer原子变量,高3位表示线程池的状态,其他的位数用来记录线程池线程个数。

线程池状态:
RUNNING:接受新任务并处理阻塞队列里的任务

SHUTDOWN:拒绝新任务并处理阻塞队列的任务

STOP:拒绝新任务并抛弃阻塞队列里的任务,同时会中断正在处理的任务

TIDYING:所有任务都执行完(包括阻塞队列)后当前线程池活动线程数位0,将要调用terminated方法。

TERMINATED:终止状态。terminated方法调用完成以后的状态。

 

RUNNING>>SHUTDOWN:显示或隐式(finalize)调用了shutdown方法。

RUNNING/SHUTDOWN>>>>STOP:显示调用了shutdownNow方法。

SHUTDOWN>>>>>TIDYING:当线程池和任务队列都空

STOP>>>TIDYING:线程池空的时候

TIDYING>>>>TERMINATED:当terminated()hook方法执行完成时。