如何终止线程池?
在Java中,终止线程池的正确方式可以确保线程池中的任务被妥善处理,并且资源得到有效释放。主要有两种方法来终止线程池:shutdown() 和 shutdownNow()。这两种方法各有特点,适用于不同的场景。
1. shutdown()
shutdown() 方法会启动一个平滑关闭的过程,允许线程池中的任务继续执行,但不再接受新的任务。这个方法会将线程池的状态设置为停止状态,并且线程池会在所有任务完成后终止。
具体流程
●不再接受新任务:调用 shutdown() 后,线程池不会再接受新的任务提交。已经提交的任务会被执行完毕。
●等待任务完成:线程池会等待所有正在执行的任务完成,但不再处理新提交的任务。
●正常终止:一旦所有任务都完成,线程池会正常终止,释放所有资源。
2. shutdownNow()
shutdownNow() 方法会立即尝试停止线程池中的所有任务,并且不会再接受新的任务。它会尽可能地中断正在执行的任务并立即关闭线程池。
具体流程
●停止接受新任务:调用 shutdownNow() 后,线程池不会再接受新任务。