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运行示意图: