线程中的 一个计数器,可以指定必须 减到0的时候,才开始下面的线程 废话不多说,直接上代码
一、没有用CountDownLatch
// 必须等上自习的同学全部离开后,班长才能关门
public class CountDownLatchDemo {
public static void main(String[] args) {
for (int i = 0; i < 6; i++) {
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"\t上完自习,离开教室");
}).start();
}
System.out.println(Thread.currentThread().getName()+"-----班长最后关门走人");
}
}
结果如下,main线程并没有等到最后才执行。
Thread-0 上完自习,离开教室
Thread-2 上完自习,离开教室
Thread-1 上完自习,离开教室
Thread-3 上完自习,离开教室
main-----班长最后关门走人
Thread-4 上完自习,离开教室
Thread-5 上完自习,离开教室
二、用了CountDownLatch
完美实现
public class CountDownLatchDemo {
public static void main(String[] args) throws InterruptedException {
CountDownLatch countDownLatch = new CountDownLatch(6);
for (int i = 0; i < 6; i++) {
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"\t上完自习,离开教室");
countDownLatch.countDown();
}).start();
}
// 等countDownLatch到0,才执行
countDownLatch.await();
System.out.println(Thread.currentThread().getName()+"-----班长最后关门走人");
}
}
结果
Thread-0 上完自习,离开教室
Thread-2 上完自习,离开教室
Thread-1 上完自习,离开教室
Thread-4 上完自习,离开教室
Thread-3 上完自习,离开教室
Thread-5 上完自习,离开教室
main-----班长最后关门走人