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方法执行完成时。