它是线程同步的一个管理器,它初始话一个count,即CountDownLacth(int count);
只有当count为0的时候,才会一起运行,即并行,不是并发哦。
countDownLatch.countDown();
这个是让countDownLatch里面的count-1的操作,然后
countDownLatch.await();
这个是等到count减到0 的时候让线程全部开始运行
举个栗子
package com.example.demo;
import java.time.LocalTime;
import java.util.UUID;
import java.util.concurrent.CountDownLatch;
public class MyThread extends Thread{
private static CountDownLatch countDownLatch;
MyThread(int i){
this.countDownLatch=new CountDownLatch(i);
}
@Override
public void run() {
System.out.println(LocalTime.now()+" 输入"+ UUID.randomUUID());
try {
Thread.sleep(300);
countDownLatch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
for(int i=0;i<4;i++){
new MyThread(4).start();
}
try {
countDownLatch.await();
System.out.println("执行完毕");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}