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---班长关门走人");
}
}