JUC包下的常见类

JUC:

  1. 可重入锁ReentrantLock:
  • lock写在try之前
  • 使用完锁之后,一定要在finally进行unlock
  1. 信号量Semaphore:用来控制锁的数量,实现限流
  • acquire():尝试获取锁,获取到,执行后面的业务逻辑,获取不到,则进入阻塞等待状态
  • release():释放锁,发布的意思
  1. 计数器CountDownlatch:
  • await():当线程数量不满足计数器的数量时,执行此方法就会阻塞等待,直到数量满足之后,才继续执行

  • countDown:计数器操作-1
    实现过程:在CountDownLatch里面有一个计数器,计数器的数量在初始化时设置,每次调用countDown计数器减一,直至计数器为0,就可以执行Await方法后的的代码了。
    缺点:只能使用一次
    使用场景:执行完一批操作后,在执行下一批

  • 面试题:CountDownlatch如何实现的?

答:在CountDownLatch里面有一个计数器,每次调用countDown()方法的时候计数器的数量-1,await()方法进行阻        塞等待,1减到0后,就可以执行await()之后的代码。

  1. 循环屏障(循环栅栏)CyclicBarrier:
  • await():计数器-1,并判断是否为0,不为0则阻塞等待,为0就继续执行之后的代码,并重置计数器的值。
    实现过程:内部有一个可以重复使用的计数器count,每次执行await()方法后,计数器减一直至计数器为0,可执行await()后的代码,并且会将count重置为初始值,继续使用

  • 面试题:CyclicBarrier和CountDownLatch的区别:一个计数器可重复使用,一个计数器只能执行一次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值