java并发包里CountDownLatch的使用详解

来源:互联网 发布:java xpath解析html 编辑:程序博客网 时间:2024/06/05 10:58

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","上面的工作终于做完了");}
0 0