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