CountDownLatch,CyclicBarrier,Semaphore的使用

Posted 大杂烩

tags:

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

什么时候使用CountDownLatch

CountDownLatch原理和示例

Semaphore信号量的原理和示例

CyclicBarrier的用法

CyclicBarrier 和 CountDownLatch 在用法上的不同:

1、CountDownLatch 适用于一组线程和另一个主线程之间的工作协作。一个主线程等待一组工作线程的任务完毕才继续它的执行是使用 CountDownLatch 的主要场景;CyclicBarrier 用于一组或几组线程,比如一组线程需要在一个时间点上达成一致,例如同时开始一个工作。另外,CyclicBarrier 的循环特性和构造函数所接受的 Runnable 参数也是 CountDownLatch 所不具备的。

2、CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同:CountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行;而CyclicBarrier一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行;另外,CountDownLatch是不能够重用的,而CyclicBarrier是可以重用的。

3、Semaphore其实和锁有点类似,它一般用于控制对某组资源的访问权限。

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

AQS原理探究

AQS原理探究

Java CountDownLatch解析(下)

CountDownLatch的使用

CountDownLatch源码分析

JUC包中的CountDownLatch源码实现分析