gpt4 book ai didi

java - 为什么Java同时有CountDownLatch和CyclicBarrier?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:39 25 4
gpt4 key购买 nike

我正在阅读多线程并遇到了这些多线程概念,我了解了它们的区别以及我们何时应该使用它们,但我无法理解为什么 Java 有两个类执行相同的工作?

CyclicBarrier可以做CountDownLatch所做的一切,那为什么Java标准库中有CountDownLatch呢?

最佳答案

一个简短但不过分详细的答案...首先是指向它们各自 javadoc 的链接:

tl;dr:主要区别在于,与 CyclicBarrier 不同,一旦 CountDownLatch 完成并结束,它就不能再使用。 javadoc 明确提到了它:

This is a one-shot phenomenon -- the count cannot be reset. If you need a version that resets the count, consider using a CyclicBarrier.

事实上,我们发现 CyclicBarrier 有一个名为 .reset() 的方法,它的作用就在于此。不仅如此,there is a version of the constructor of a CyclicBarrier它关联了一个 Runnable 每次障碍被“触发”时运行(这就是 javadoc 所说的;不要问我)。

因此,它们确实是不同的,因为一个简单的事实是一个是可重用的 (CyclicBarrier) 而另一个不是 (CountDownLatch)。

关于java - 为什么Java同时有CountDownLatch和CyclicBarrier?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34209257/

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