1:JUC是什么
JUC全名java.util.concurrent是一种在并发编程中使用的工具类
JUC主要是三大包构成:并发包,并发原子包,并发lock包
如下介绍的三种辅助类都是在java.util.concurrent包下
2:倒计数器——CountDownLatchDemo
CountDownLatch是一个非常实用的多线程控制工具类。"Count Down”在英文中意为倒计数,Latch 意为门闩的意思,这里简单地称之为倒计数器。在这里,门闩的含义是把门锁起来,不让里面的线程跑出来。因此,这个工具通常用来控制线程等待,它可以让某一个线程等待直到倒计数结束,再开始执行。
CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行
下面这个简单的实例,演示CountDownLatch用法
题目:班长(主线程)监督六个同学上自习,假设第一个同学八点就走了,第二个九点就走了。。要求六个同学走完了,班长(主线程)才可以走
代码演示
public class CountDownLatchDemo {
public static void main(String[] args) throws InterruptedException {
3 CountDownLatch countDownLatch=new CountDownLatch(6);
for (int i=0;i<6;i++){
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"离开教室");
7 countDownLatch.countDown();
},String.valueOf(i)).start();
}
10 countDownLatch.await();
System.out.println(Thread.