首页 > 代码库 > 多线程之 CountDownLatch

多线程之 CountDownLatch

CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

CountDownLatch如其所写,是一个倒计数的锁存器,当计数减至0时触发特定的事件。利用这种特性,可以让主线程等待子线程的结束。

主要方法

 public CountDownLatch(int count);

 public void countDown();

 public void await() throws InterruptedException
 

构造方法参数指定了计数的次数

countDown方法,当前线程调用此方法,则计数减一

awaint方法,调用此方法会一直阻塞当前线程,直到计时器的值为0

 

ExecutorService thradPool = Executors.newFixedThreadPool(5);

final CountDownLatch cl = new CountDownLatch(5);

for(int i = 0 ; i<5; i++){

  thradPool.execute(new Runnable() { 

  @Override

  public void run() {

    cl.countDown();

  }

}

thradPool.shutdown();

cl.await();  //全部线程执行完毕之后

多线程之 CountDownLatch