CountDownLatch 强调的是一个线程(或多个)需要等待另外的 n 个线程干完某件事情之后才能继续执行。
测试案例
package com.personal.test.countdownlatch;import java.util.Random;import java.util.concurrent.CountDownLatch;public class Test20201225162321 {public static void test20201225162329() {CountDownLatch latch = new CountDownLatch(2);Test20201225162416 t1 = new Test20201225162416(latch);Test20201225162416 t2 = new Test20201225162416(latch);new Thread(t1).start();new Thread(t2).start();}public static void main(String[] args) {Test20201225162321.test20201225162329();}}class Test20201225162416 implements Runnable {private final CountDownLatch latch;public Test20201225162416(CountDownLatch latch) {this.latch = latch;}@lombok.SneakyThrows@Overridepublic void run() {System.out.println(Thread.currentThread().getName());Thread.sleep(new Random().nextInt(1) * 1000L);latch.countDown();}}
参考资料
https://www.cnblogs.com/csu_xajy/p/4338357.html
https://blog.csdn.net/yujin753/article/details/46125283
