java并发包里CountDownLatch的使用详解

本文介绍了一个同步辅助类CountDownLatch的使用方法,通过示例代码详细解释了如何利用它来实现多线程之间的等待操作,特别适合需要按顺序执行任务且不依赖于并发线程管理的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A synchronization aid that allows one or more threads to wait until
a set of operations being performed in other threads completes.

这是官网对此类的作用的解释:同步延迟,允许一个或多个线程等待一个线程完成后,他们才开始执行。

这对我们同步开启了好几个线程但是我们,想按照一定的顺序执行,而且不借助并发的线程管理类,这个类对我们就很有帮助。

看代码:

/**
* 线程管理和调度者
*/
private CountDownLatch runFlag;
long count;
@Test
public void testCountDownLatch(){

    runFlag=new CountDownLatch(1);//表示run+1
  count = runFlag.getCount();//是1

    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
        @Override
        public void run() {
            //模拟网络请求或者一个耗时业务

            //完成后
            runFlag.countDown();//run-1
            count=runFlag.getCount();//是0
        }
    },6000);

    try {
        /**
         * 一直等待5秒后或者count==0时才会执行下面的Log,要不然就会一直在这里阻塞
         */
        boolean b=runFlag.await(5000, TimeUnit.MILLISECONDS);

        if(b){
            //表示是等待的时间还没到5s,count就等于零了,就不用等待了
        }else{
            //表示count还大于零,但是已经等待的时间大于或者等于5s了,所以也不等待了
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    Log.e("flag","上面的工作终于做完了");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值