java-多线程-CountDownLatch(倒计时锁)

CountDownLatch是一个同步工具类,常用于控制多个线程的等待。它的工作原理是,当计数器为0时,所有等待的线程会被释放。await()方法会阻塞线程直到计数器归0,而countDown()则会将计数器减1。通过一个实例展示了在大佬先洗澡,小弟后洗澡的场景中,如何利用CountDownLatch确保小弟在大佬们都洗完澡后才开始洗澡。
摘要由CSDN通过智能技术生成
  • CountDownLatch
  1. 用于控制线程的执行顺序
  2. await():阻塞当前线程,并监视计数器的值,如果计数器值不为0则一直阻塞,如果计数器值变为0则自动让行,线程继续执行
  3. countDown():计数器值减1
  • 我们用一个简单的例子看一下
  1. 场景:假设有2个小弟和3个大佬都去洗澡,小弟不能和大佬一起洗,必须等大佬都洗完了小弟才可以去洗澡
// 洗澡线程
public class ThreadBath implements Runnable {

    private String name;// 姓名
    private CountDownLatch worm;// 小弟
    private CountDownLatch mogul;// 大佬

    public ThreadBath(String name, CountDownLatch worm, CountDownLatch mogul) {
        this.name = name;
        this.worm = worm;
        this.mogul = mogul;
    }

    @Override
    public void run() {
        try {
            System.out.println(this.name+":想要洗澡");
            if(worm != null){
                    worm.await();
            }
            System.out.println
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值