线程中的 一个计数器,可以指定必须 减到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-----班长最后关门走人
