gpt4 book ai didi

Java - COUNTDOWNLATCH 中的计数

转载 作者:行者123 更新时间:2023-11-30 04:35:39 26 4
gpt4 key购买 nike

运行每个线程时,为什么即使前一个线程已经调用了 countdown.countDown() 并将 Latch Count 减少了 1,countdown.getCount() 仍总是打印“3”?

我有点困惑 Java 如何知道 Latch Count 已达到 0,以便它可以释放所有 3 个线程。

import java.util.concurrent.CountDownLatch;

class b {
static final CountDownLatch countdown = new CountDownLatch(3);

public static void main(String[] args) {

for (int i = 0; i < 3; ++i) {
Thread t = new Thread() {
public void run() {
System.out.printf("Starting on %d other threads.\n",
countdown.getCount());
countdown.countDown();
System.out.printf("new on %d other threads.\n",
countdown.getCount());
try {
countdown.await(); // waits until everyone reaches this
// point
// System.out.println("Go again : "
// +countdown.getCount());
} catch (Exception e) {
}
}
};
t.start();

}
System.out.println("Go");
}

}

最佳答案

您正在并行启动 3 个线程。根据它们启动的速度,它们都可以在任何线程设法调用 countDown() 之前打印“3”(至少对于“Starting on...”行)。然而,“new on ...”行应该打印出 2 到 0 之间的某个数字范围。

关于Java - COUNTDOWNLATCH 中的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13592208/

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