线程池有五种典型状态:
1.RUNNING(运行状态):在这个状态下,线程池可以接收新的任务提交,并且能够处理已添加到任务队列中的任务。这是线程池的初始状态,也是最活跃的状态。这是最正常的状态
2.SHUTDOWN(关闭状态)当调用了线程池的`shutdown()`方法后,线程池进入此状态。此时,线程池不再接受任何新的任务提交,但它会继续执行已经存在于任务队列中的任务直到它们全部完成。
3.STOP(停止状态):如果调用了`shutdownNow()`方法,线程池会进入STOP状态。此时,线程池不仅不会接受新的任务,而且会尽力去中断正在执行的任务,并且清空任务队列。
4.TIDYING(整理状态):当所有的任务(包括正在执行的和队列中的)都已完成,并且所有的worker线程(除了finalizer线程)都已经结束,线程池就会从SHUTDOWN或STOP状态转换到TIDYING状态。在这个状态中,会执行`terminated()`钩子方法进行一些清理工作。 workCount 为 0
5.TERMINATED(终止状态):在`terminated()`方法执行完毕后,线程池就进入了TERMINATED状态。这时,线程池已经完全终止,所有资源都被释放,线程池生命周期结束。
这些状态之间的转换代表了线程池从创建到最终销毁的完整过程