gpt4 book ai didi

java - 为什么java中的CountDownLatch不能再次改变它的状态?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:44:53 28 4
gpt4 key购买 nike

在 Java 中,一旦 CountdownLatch 达到其状态 = 0,就无法更改它,因此它永远保持打开状态。我想知道为什么实现者不允许重用 CountDownLatch?

最佳答案

如果它是可重用的,您将如何处理不同的到达迭代?例如,假设您想等待 CountDownLatch

CountDownLatch latch = new CountDownLatch(1);

latch.await();

然后一个线程调用

latch.countDown();

await 被释放。现在你有另一个线程,只有在前一个线程倒计时时才应该释放。因此,您调用了 latch.await()。如果闩锁是可变的,线程应该等待还是继续?闩锁如何知道此等待不应该用于另一个周期(或阶段)?

最终,事实并非如此。可变闩锁很难,但有可能。 Java 7 发布了一个 Phaser .它将每个下一次迭代视为一个阶段,您可以告诉移相器在特定阶段等待:

phaser.awaitAdvance(phase);

关于java - 为什么java中的CountDownLatch不能再次改变它的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297171/

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