2.如何关闭一个线程池?
ExecutorService提供了两种方法来关闭线程池,shutdown()和shutdownNow()
(1) shutdown:拒收新的任务,立马关闭正在执行的任务,可能会引起报错,需要异常捕获
(2) shutdownNow:拒收新的任务,等待任务执行完毕,要确保任务里不会有永久等待阻塞的逻辑,否则会导致线程关闭不了。不是马上关闭,要想等待线程池关闭,还需要调用waitFermination来阻塞等待
还有一些业务场景下,需要知道线程池中的任务是否全部执行完成,当我们关闭线程池之后,可以用isTerminated来判断所有的线程是否执行完成,千万不要用isShutdown,它只是返回你是否调用过shutdown的结果

浙公网安备 33010602011771号