ThreadPoolExecutor中的shutdown()
时间: 2023-10-17 22:26:57 浏览: 89
ExecutorService.shutdown()应该是在线程执行完毕后,才会去关闭
5星 · 资源好评率100%
ThreadPoolExecutor中的shutdown()方法是用来优雅地关闭线程池的。当调用shutdown()方法后,线程池会停止接受新的任务,并且等待已经提交的任务执行完成。具体来说,shutdown()方法会执行以下几个步骤:
1. 停止接受新的任务:调用shutdown()方法后,线程池会标记为"关闭"状态,不再接受新的任务提交。
2. 执行已提交的任务:线程池会等待已经提交的任务执行完成。已经在执行的任务会继续运行直到完成或者被中断。
3. 中断空闲线程:一旦所有已提交的任务执行完成,线程池会中断所有当前空闲的线程。这是为了尽快释放线程资源。
4. 结束线程池:最后,线程池会完全终止,不再占用任何资源。
需要注意的是,shutdown()方法只是启动了线程池的关闭过程,并不会立即停止所有任务的执行。要等待所有任务完成,可以使用awaitTermination()方法。此外,shutdown()方法不能撤销已经提交但还未执行的任务,如果需要立即停止所有任务,可以使用shutdownNow()方法。
阅读全文