CyclicBarrier和CountDownLatch的差别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CyclicBarrier和CountDownLatch的差别相关的知识,希望对你有一定的参考价值。

CyclicBarrier和CountDownLatch都用多个线程之间的同步,
共同点:
同时有N个线程在 CyclicBarrier(CountDownLatch) 等待上等待时,CyclicBarrier(CountDownLatch) 的wait 函数满足条件,会唤醒等待线程,从 等待线程的wait()出返回。

不同点:
CountDownLatch latch=new CountDownLatch(2);

thread1:latch.wait() .不满足 ,线程切换到等待状态
thread2:latch.wait() 满足, 此时 thread2从wait出返回,并且唤醒 thread1线程,
thread3:latch.wait() 此时,无条件满足,直接返回,线程不会切换出执行状态


CyclicBarrier latch=new CyclicBarrier (2);

thread1:cyclicBarrier.wait() .不满足 ,线程切换到等待状态
thread2:cyclicBarrier.wait() 满足, 此时 thread2从wait出返回,并且唤醒 thread1线程,
thread3:cyclicBarrier.wait() 依旧不满足,thread3 切换到等待状态。
thread4:cyclicBarrier.wait() 满足, 此时 thread4从wait出返回,并且唤醒 thread3线。

以上是关于CyclicBarrier和CountDownLatch的差别的主要内容,如果未能解决你的问题,请参考以下文章

CountDownLatch和CyclicBarrier的比较

Java并发包中CyclicBarrier的源码分析和使用

CyclicBarrier如何使用?

☕Java深层系列「并发编程系列」让我们一起探索一下CyclicBarrier的技术原理和源码分析

十栅栏CyclicBarrier

JUC回顾之-CyclicBarrier底层实现和原理