java - ExecutorService 中的线程组

标签 java multithreading java.util.concurrent

在 ExecutorService 中,如何对处理特定类(class) id 的所有线程进行分组,然后在一个线程完成该类(class) id 的处理后,关闭该类(class) id 进程中的所有其他线程?

一个线程完成处理之前可以处理类(class)ID的线程数量,不是一个固定的数字。

更新:

因此,任何进入处理本类(class)的线程,我都会将它们添加到静态集合中。

假设对于 courseid1,thread1 最初正在处理,

List l1 = new ArrayList();
l1.add(thread1);

Map t = new Hashmap();
t.add("courseid1":l1)

因此,当线程 1 正在处理时,另一个线程来处理 courseid1,

l1.add(thread2);

然后,一旦线程1看到类(class)状态已完成,我将向列表l1中的所有线程发送成功。

最佳答案

我会使用parallelStream一旦任务失败,或者如果您指定想要第一个结果,这将停止所有任务。

Optional<Result> res = tasks.parallelStream().map(t -> process(t)).findFirst();

关于java - ExecutorService 中的线程组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38554500/

相关文章:

multithreading - 应用程序需要很长时间才能同步线程(或根本不同步)

c# - 如何测试锁内等待线程

java - 为什么Java中的BlockingQueue在notify上没有if子句?

java - 从终端使用 OpenCV 运行 java 时发生 JNI 错误

java - URL url = getClass().getResource ("") 指的是哪个位置?

结果集 Oracle 上的 Java 线程

java - ReentrantLock#tryLock(long,TimeUnit) 在尝试获取锁时在做什么?

java - 如何使用 CyclingBarrier 同步线程并保留其执行顺序?

java - 通过 BufferedReader 检索数据后 List 中的值重复

java - 如何在 Java 中格式化数字?