(1) RUNNING
状态说明:线程池处于RUNNING状态时,能够接收新任务以及对已经添加的任务进行处理。
状态切换:线程池的初试状态为RUNNING,换句话说线程池一旦被创建,就处于RUNNING状态,且线程池中的任务数为0;
(2)SHUTDOWN
状态说明:线程池处于SHUTDOWN状态时,不接收新任务,但能处理已经添加地任务
状态切换:调用线程池的shutdown()接口时,线程池由RUNNING->SHUTDOWN
(3)STOP
状态说明:线程池处于STOP状态时,不接收新任务,不处理已添加的任务,并且会中断正在处理的任务。
状态切换:调用线程池的shutdownNow()接口时,线程池由(RUNNING)或者(SHUTDOWN)->STOP
(4)TIDYING
所有的任务都销毁了,workCount为0,线程池的状态再转换为TIDYING状态时,会执行方法terminated()。因为terminated()在ThreadPoolExecutor类中是空的,所以用户想在线程池变为TIDYING时进行相应的处理;可以通过重载terminated()函数来实现。
当线程池在SHUTDOWN状态下,阻塞队列为空并且线程池中执行的任务也为空时,就会由SHUTDOWN->TIDYING。
当线程池在STOP状态下,线程池中执行的任务为空时,就会由STOP->TIDYING。
(5)TERMINATED:线程池在TIDYING状态时,执行完terminated()之后,就会由TIDYING->TERMINATED。