我在线程 A 上创建 ExecutorService,然后线程 B 在 ExecutorService 上调用 shutdown()
和 awaitTermination()
。
假设在线程B创建之前所有任务都已提交,并且不会提交新的任务,是否有危险?
我猜这没什么问题,但问一下总没有坏处。
最佳答案
正如您所猜测的,从线程 B 的 ExecutorService 上调用 ExecutorService shutdown() 和 waitTermination(..) 绝对没问题。
事实上,在 ExecutorService 的通常使用中,一个线程负责将所有线程任务添加到 executorservice 中,然后同一线程启动正常 shutdown() 和 waitTermination(..)。因此,在您的情况下,您只是创建 ThreadB 来执行关闭任务。
理想情况下,最好不要将 ThreadB 提交到它会尝试 shutdown() 的同一个 ExecutorService,我相信您会考虑到这一点。
关于java - 从与创建 ExecutorService 不同的线程调用 ExecutorService.shutdown() 和 waitTermination() 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25587793/