2.如何关闭一个线程池?

ExecutorService提供了两种方法来关闭线程池,shutdown()和shutdownNow()

  (1) shutdown:拒收新的任务,立马关闭正在执行的任务,可能会引起报错,需要异常捕获

  (2) shutdownNow:拒收新的任务,等待任务执行完毕,要确保任务里不会有永久等待阻塞的逻辑,否则会导致线程关闭不了。不是马上关闭,要想等待线程池关闭,还需要调用waitFermination来阻塞等待

还有一些业务场景下,需要知道线程池中的任务是否全部执行完成,当我们关闭线程池之后,可以用isTerminated来判断所有的线程是否执行完成,千万不要用isShutdown,它只是返回你是否调用过shutdown的结果

posted @ 2021-08-07 22:27  RainsX  阅读(176)  评论(0)    收藏  举报