线程池的状态可以通过ThreadPoolExecutor类的getPoolSize()方法,getActiveCount()方法,getCompletedTaskCount()方法和getTaskCount()方法来查询。线程池的状态有以下几种:
1. Running(运行状态):线程池新建或调用execute()方法后,处于运行状态,能够接收新的任务。
2. Shutdown(关闭状态):线程池调用shutdown()方法后,线程池的状态会变为Shutdown。此时线程池不再接收新的任务,但会执行已提交的等待任务队列中的任务。
3. Stop(停止状态):人为调用shutdownNow()方法后,线程池的状态会变为Stop。此时线程池不再接收新的任务,并且会中断正在处理中的任务。
4. Tidying(整理状态):当线程池处于Shutdown或Stop状态时,如果等待队列中还有未执行的任务,则线程池将执行整理操作,将等待队列中的未执行任务移除,并保存到一个列表中。
5. Terminated(终止状态):当线程池处于Shutdown状态,并且等待队列中的任务全部执行完毕,或者在Stop状态下,线程池内部的所有线程都已经终止时,线程池进入Terminated状态。
线程池的状态变化如上所述,可以更好地对线程池进行管理和监控。