CountDownLatch(倒计时器)通常用来控制线程等待,它可以让一个线程等待直到倒计时结束再开始执行。CountDownLatch的构造函数接收一个整数作为参数,即当前这个计数器的个数:public CountDownLatch(int count);
CountDownLatch常用的方法:
countdown()方法,指倒计时器减一。
await()方法,在某个线程里调用,使该线程等待倒计时器为0后再继续执行。
应用示例:
public class CountDownLatchDemo implements Runnable{
private static CountDownLatch countDwonLatch=new CountDownLatch(5);
public void run(){
try {
Thread.sleep(new Random().nextInt(2000));
System.out.println("over");
countDwonLatch.countDown();//一个线程工作结束,计时器减1
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws InterruptedException {
CountDownLatchDemo dome=new CountDownLatchDemo();
ExecutorService exe=Executors.newFixedThreadPool(5);
for(int i=0; i<5; i++){
exe.execute(dome);
}
countDwonLatch.await();//主线程等待所有线程工作结束
System.out.println("All is over");
exe.shutdown();
}
}