countdownlantch闭锁和cyclicbarrirer栅栏和semaphore信号量

10 篇文章 0 订阅

1、CountdownLatch又叫闭锁

       首先CountdownLatch 是一次性的锁。使用后锁状态就消失。

       允许一个或多个线程阻塞,等待前置线程执行完后后,即计数器减为零时,阻塞的线程才继续执行。调用await()方法的线程进行阻塞,前置线程调用countDown()计数器减一。

2、CyclicBarrier 栅栏锁

      CyclicBarrier是可以重复使用的,基于可重入锁ReentrantLock和Condition状态实现。当一组线程中的某一线程执行到达栅栏时调用 barrier.await() 先把自己阻塞起来,等待这一组中的所有线程都执行到达后才继续往下执行

      当有线程到达屏障调用await() 使用ReetrantLock的ConditionObject的等待队列,通过向Condition中等待队列添加元素实现阻塞,当条件满足唤醒等待队列中的线程,依次序执行。

3. Semaphore 基于AQS实现的用来限制访问特定资源的线程数

前两者的区别:闭锁是要等待前置线程执行完成。栅栏锁是这一组本身全部执行到达条件时才能继续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值