总结一下,我的实现方式:
- 例如,通过ExecutorService运行您的不同进程
ExecutorService executor = Executors.newFixedThreadPool(nThreads);
- 将所有任务的期货存储在列表中(由ExecutorService#submit返回)
- 等待
future1.get()
完成,future1
将来与cp1链接在哪里 - 一旦
get
退货(cp1完成),取消所有其他期货,(或shutdownNow
如果不再需要执行者,则取消执行者服务) - 为了使取消过程起作用,您的cp2,cp3等需要实施中断策略,以使他们尽快停止正在执行的操作。



