gpt4 book ai didi

java - java中的线程等待

转载 作者:行者123 更新时间:2023-12-01 11:37:18 24 4
gpt4 key购买 nike

例如,我总共有 5 个线程,主线程 (A) 和 04 个其他子线程 (B、C、D、E)。我想要的是线程 E 需要等待线程 B、C 完成其工作。我打算使用 join(),但似乎主线程也会被阻塞。我需要主线程,并且线程 D 可以在线程 E 等待线程 B 和 C 时继续运行。
我不知道如何以正确的方式实现这一点。如果有人可以提供帮助,那就太好了。
非常感谢

最佳答案

您可以使用CountDownLatch .

CountDownLatch 类

java.lang.Object
java.util.concurrent.CountDownLatch
<小时/>
public class CountDownLatch
extends Object

一种同步辅助工具,允许一个或多个线程等待,直到其他线程中执行的一组操作完成。

例如:

下面是一个完成信号,允许驱动程序等待所有工作人员完成 -

    class Worker implements Runnable {
private final CountDownLatch startSignal;
private final CountDownLatch doneSignal;
Worker(CountDownLatch startSignal, CountDownLatch doneSignal) {
this.startSignal = startSignal;
this.doneSignal = doneSignal;
}
public void run() {
try {
startSignal.await();
doWork();
doneSignal.countDown();
} catch (InterruptedException ex) {} // return;
}

void doWork() { ... }
}

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com