CyclicBarrier和CountDownLatch 都位于java.util.concurrent 这个包下

CyclicBarrier和CountDownLatch区别

一、CountDownLatch用法

CountDownLatch类只提供了一个构造器:

public CountDownLatch(int count) {  };  //参数count为计数值
然后下面这3个方法是CountDownLatch类中最重要的方法:

public void await() throws InterruptedException { };   //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行
public boolean await(long timeout, TimeUnit unit) throws InterruptedException { };  //和await()类似,只不过等待一定的时间后count值还没变为0的话就会继续执行
public void countDown() { };  //将count值减1


CountDownLatch, 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

二、CyclicBarrier用法

CyclicBarrier提供2个构造器:

public CyclicBarrier(int parties, Runnable barrierAction) {
}
 
public CyclicBarrier(int parties) {
}
参数parties指让多少个线程或者任务等待至barrier状态;参数barrierAction为当这些线程都达到barrier状态时会执行的内容。
CyclicBarrier中最重要的方法就是await方法

public int await() throws InterruptedException, BrokenBarrierException { };//挂起当前线程,直至所有线程都到达barrier状态再同时执行后续任务;
public int await(long timeout, TimeUnit unit)throws InterruptedException,BrokenBarrierException,TimeoutException { };//让这些线程等待至一定的时间,如果还有线程没有到达barrier状态就直接让到达barrier的线程执行后续任务

转自:https://blog.csdn.net/tolcf/article/details/50925145 

------------------------------------------------------------------------------------------

CountDownLatch : 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行。   

CyclicBarrier        : N个线程相互等待,任何一个线程没有到达或完成时,所有的线程都必须互相等待。
这样应该就清楚一点了,对于CountDownLatch来说,重点是那个“一个线程”, 是它在等待, 而另外那N的线程在把“某个事情”做完之后可以继续等待,可以终止。而对于CyclicBarrier来说,重点是那N个线程,他们之间任何一个没有完成,所有的线程都必须等待。

CountDownLatch 是计数器, 线程完成一个就记一个, 就像 报数一样, 只不过是递减的.

而CyclicBarrier更像一个水闸, 线程执行就想水流, 在水闸处都会堵住, 等到水满(线程到齐)了, 才开始泄流.

CyclicBarrier场景:

假设有只有的一个场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个人没有准备好,大家都等待.

转自:http://scau-fly.iteye.com/blog/1955165

 CountDownLatch实例二

 CountDownLatch实例一

 CyclicBarrier实例二

CyclicBarrier实例一

CyclicBarrier和CountDownLatch区别

相关文章:

  • 2022-12-23
  • 2021-06-16
  • 2021-10-10
  • 2022-12-23
  • 2021-08-20
  • 2021-11-27
  • 2021-05-22
  • 2021-07-02
猜你喜欢
  • 2022-12-23
  • 2021-08-06
  • 2022-12-23
  • 2021-06-08
  • 2021-06-14
相关资源
相似解决方案