java - 在 Java 中 : how can i terminate execution of all threads without waiting for them to finish their jobs using ExecutorService?

标签 java multithreading runnable executorservice

我有下面的代码,其中执行器类型为 ExecutorService:

Runnable worker = new MyRunnable(x, y, p);
                executor.execute(worker);

当一个数字打印 p 次时,我希望所有线程的执行都干净地终止,而不用等待其他线程完成它们的工作。 我该怎么做?

最佳答案

您不能完全终止线程,就像在 MS DOS 时代您不能完全终止程序一样。原因是在线程级别没有等效的进程间隔离,它们都共享相同的地址空间和其他资源。

你唯一的选择是显式地实现一个基于线程中断的合作协议(protocol),这将使线程退出他们正在做的事情自己并结束。

关于java - 在 Java 中 : how can i terminate execution of all threads without waiting for them to finish their jobs using ExecutorService?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29349669/

相关文章:

java - 未找到测试 - 使用 JUnit5 时 [在 IntelliJ IDEA 中]

java - 调整桌面 GUI 中组件的大小

java - 两个线程可以同时访问一个同步方法吗?

java - 暂停和恢复计时器而不重置计时器

java - callable 是否按顺序执行?

Java:如何将 JLabel 移动到 JPanel 的中心?

java - Java中同步关键字的使用

Java原子操作

java - 如果一个类有一个内部类并且内部类运行一个线程,那么内部类线程是否彼此共享外部类的相同字段?

java - 加密 zip