gpt4 book ai didi

Java 并发数 : Countdown latch vs Cyclic barrier

转载 作者:搜寻专家 更新时间:2023-11-01 00:56:51 28 4
gpt4 key购买 nike

我正在阅读 java.util.concurrent API , 并发现

  • CountDownLatch:一种同步辅助工具,允许一个或多个线程等待,直到其他线程中正在执行的一组操作完成。
  • CyclicBarrier:一种同步辅助,允许一组线程全部等待彼此到达一个共同的障碍点。

对我来说两者似乎是平等的,但我相信还有更多。

例如,在 CoundownLatch 中,倒计时值无法重置,这可能发生在 CyclicBarrier 的情况下

这两者还有什么区别吗?
有人想要重置倒计时值的用例是什么?

最佳答案

还有一个区别。

使用 CyclicBarrier 时,假设您指定了触发屏障的等待线程数。如果指定 5,则必须至少有 5 个线程才能调用 await()

当使用 CountDownLatch 时,您指定调用 countDown() 的次数,这将导致所有等待线程被释放。这意味着您可以使用只有一个线程的 CountDownLatch

“你为什么要那样做?”,你可能会说。想象一下,您正在使用由执行回调的其他人编写的神秘 API。您希望您的一个线程等待某个回调被多次调用。您不知道将在哪些线程上调用回调。在这种情况下,CountDownLatch 是完美的,而我想不出任何使用 CyclicBarrier 来实现它的方法(实际上,我可以,但它涉及超时...... . 呸!)。

我只是希望 CountDownLatch 可以重置!

关于Java 并发数 : Countdown latch vs Cyclic barrier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20817063/

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