简述线程池都有哪些状态?
参考答案:
线程池主要有五种状态:
- RUNNING:这是线程池的初始化状态。在RUNNING状态下,线程池可以接收新的任务和执行已添加的任务。
- SHUTDOWN:当线程池调用shutdown()方法后,线程池进入SHUTDOWN状态。此时,线程池不再接收新任务,但能够继续处理已经添加的任务。
- STOP:当线程池调用shutdownNow()方法后,线程池进入STOP状态。此时,线程池不仅不再接收新任务,也不会处理已经添加的任务,并且会中断正在执行的任务。
- TIDYING:当线程池处于SHUTDOWN状态,并且所有任务都已终止,记录的“任务数量”为0时,线程池会变为TIDYING状态。在这个状态下,线程池会执行terminated()方法。另外,如果线程池在STOP状态下,且线程池中执行中的任务为空,也会由STOP状态转变为TIDYING状态。
- TERMINATED:当线程池在TIDYING状态下执行完terminated()方法后,线程池会彻底终止,变为TERMINATED状态。
这五种状态描述了线程池从启动到终止的生命周期,以及在不同状态下对任务的处理方式。