java并行线程需要到达一个点,等待另一个线程,然后恢复最佳方法?
以下是(简化的)场景:
- 我有线程A,B,C并行运行李>
- 一旦所有3个线程都达到执行的第7步,它们就必须等待。(每个线程将在不同的时间到达步骤7,这无法提前知道)李>
- 线程D随后启动并运行到完成李>
- 只有在D完成后,A、B和C才能恢复并运行到完成李>
用什么样的工具或设计来解决这个问题
到目前为止,我看到的并发和信号量示例似乎只处理两个线程,或者假设并行线程正在做类似的事情,但只是共享一个var或消息传递。我还没有发现任何与上述场景相关的东西。我正在继续调查,并将更新任何发现
如果倒计时锁存器不需要退出其他线程,那么倒计时锁存器可能会工作。或者,如果它可以反向工作,则使n
线程等待线程D退出
我对并发(concurrency)还比较陌生(大学课程不会在需要的时间附近提供它),所以请容忍我。如果有人遇到类似问题,请将此链接放到此处:HowToDoInJava - Concurrency
# 1 楼答案
我会用Phaser
输出示例:
# 2 楼答案
下面是我用
CountDownLatch
本身想到的。它不一定只有在线程完成时才需要倒计时样本输出: