package com.atguigu.sh.juc.study03;import java.util.concurrent.CountDownLatch;/** * * 【第七节】 * * JUC强大的辅助类一: CountDownLatch.class * CountDownLatch countDownLatch = new CountDownLatch(6); * 线程执行时,调用CountDownLatch对象的countDown()方法,进行倒数; * 然后调用CountDownLatch对象的countDown对象的await()方法后的逻辑,会在countDown()到0的时候才调用; * * * 假设模拟学生上自习,班长等学生离开教室,进行关门的场景; * 一定要所有的学生都离开教室(所有的线程都运行完毕),班长才能关门 * * */public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(6); for (int i = 1; i <= 6 ; i++) { new Thread(() -> { System.out.println(Thread.currentThread().getName()+"\t离开教室"); countDownLatch.countDown(); }, String.valueOf(i)).start(); } countDownLatch.await(); System.out.println("main---班长关门走人"); } private static void errorCloseDoor() { for (int i = 1; i <= 6 ; i++) { new Thread(() -> { System.out.println(Thread.currentThread().getName()+"\t离开教室"); }, String.valueOf(i)).start(); } System.out.println("main---班长关门走人"); }}