我在线程A上创建ExecutorService,然后线程B在ExecutorService上调用shutdown()
和awaitTermination()
。
假设在创建线程B之前已经提交了所有任务,并且没有提交新任务,是否有任何危险?
我猜它没关系,但问问题永远不会伤害。
答案 0 :(得分:0)
正如您所猜测的那样,从Thread B调用ExecutorService上的ExecutorService shutdown()和awaitTermination(..)是绝对正确的。
事实上,在ExecutorService的通常用法中,一个线程负责将所有线程任务添加到executorservice,然后同一线程启动正常shutdown()然后awaitTermination(..)。因此,在您的情况下,您只是创建ThreadB来执行关机任务。
理想情况下,最好不要将ThreadB提交给它会尝试关闭的同一个ExecutorService(),我相信你会考虑这个。