java - 从与创建 ExecutorService 不同的线程调用 ExecutorService.shutdown() 和 waitTermination() 是否安全?

标签 java multithreading concurrency executorservice

我在线程 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/

相关文章:

java - 如何将main方法类转为Junit测试类?

java - 将未使用的通用参数添加到接口(interface)如何停止实现它的类?

java - 如果正在添加的对象有重复项,如何抛出异常

java - Java JavaFX 应用程序中的多线程问题

c - 我如何跟踪所有 fork()

c# - 多线程

java - ImageIcon 帮助 + 关闭 JOptionPane

java - 当没有消费者准备好时处理生产者线程

java - 在 Go 中写 int32 原子操作?

c++ - 解释这个 Concurrency::Task 调用中的 "="sign 参数