当调用 EXECUTOR.shutdown()
方法时,线程池会尝试平稳地关闭,它会遵循以下步骤:
-
停止接收新的任务:
shutdown()
方法会停止接收新的任务,但会让已经在任务队列中的任务继续执行。 -
执行队列中的任务:线程池会等待任务队列中的任务执行完毕,不再接收新任务。已经在执行的任务会继续执行,直到任务队列为空。
-
关闭线程池:一旦任务队列中的任务执行完毕,线程池中的所有线程会被停止并且线程池会完全关闭。
因此,shutdown()
方法不会立即停止线程池,而是会等待任务队列中的任务执行完毕后再停止线程池。这可以确保线程池中的任务能够得到执行,同时避免新任务的接收。
如果你希望立即停止线程池,并且放弃尚未执行的任务,可以使用 shutdownNow()
方法。这个方法会尝试立即停止线程池,并返回尚未执行的任务列表。