CountDownLatch详解

CountDownLatch是一个非常实用的多线程控制工具类。“Count Down”在英文中意为倒计数,Latch为门闩的意思。如果翻译成为倒计数门闩,我想大家都会觉得不知所云吧!因此,这里简单地称之为倒计数器。在这里,门闩的含义是:把门锁起来,不让里面的线程跑出来。因此,这个工具通常用来控制线程等待,它可以让某一个线程等待直到倒计时结束,再开始执行。

import java.util.concurrent.CountDownLatch;

public class CountDownLatchDemo2 extends Thread {

  public static void main(String[] args) {
    CountDownLatch countDownLatch=new CountDownLatch(100);
    for (int i = 0; i < 100; i++) {
      new CountDownLatchDemo2().start();
      countDownLatch.countDown();
    }
  }

  @Override
  public void run() {
    try {
      System.out.println("---------子线程"+Thread.currentThread().getName()+"正在执行");
      Thread.sleep(3000);
      System.out.println("----over-------子线程"+Thread.currentThread().getName()+"执行完毕");
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}

由此可知:
主线程运行,一直等到CountLatch的所有线程都到达才继续往下执行。
countDownLatch.countDown();不断往下减少,一直为0时。表明所有执行完成。

CountDownLatch运行示意图:

image


文章作者: 凌云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 凌云 !
  目录