多线程之 CountDownLatch

时间:2023-03-09 19:08:44
多线程之 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();  //全部线程执行完毕之后