当前位置:  开发笔记 > 编程语言 > 正文

为什么Java同时具有CountDownLatch和CyclicBarrier?

如何解决《为什么Java同时具有CountDownLatch和CyclicBarrier?》经验,为你挑选了1个好方法。

我正在阅读多线程,并涉及到了多线程的概念,我读了它们的区别以及何时应该使用它们,但是我不明白为什么Java有两个做相同工作的类?

CyclicBarrier可以做到的所有事情CountDownLatch,那么为什么CountDownLatch在Java标准库中呢?



1> Andrey Taptu..:

CyclicBarrier可以完成CountDownLatch的所有工作,那么为什么Java标准库中的isCountDownLatch呢?

并不是的。

两者之间最大的区别不是一个是可重用的,另一个是不可重用的。区别在于状态更改的时间。对于闩锁-当有人(这是键!)调用countDown()方法时,对于屏障-当线程(那是键)到达await()方法时。

因此,基本上,我们在这里有不同的度量单位-一种以对countDown()的调用数进行操作,而另一种以等待线程数进行操作

考虑2个例子:

// thread 1
for (int i = 0; i < 10; i++) {
  latch.countDown() //perfectly fine
}

//thread 2
for (int i = 0; i < 10; i++) {
  barrier.await() //oops 
}

有效地考虑到两者都是针对不同事物的计数器,它们的特征以某种方式相交。

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有