在 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/