- 用于控制线程的执行顺序
- await():阻塞当前线程,并监视计数器的值,如果计数器值不为0则一直阻塞,如果计数器值变为0则自动让行,线程继续执行
- countDown():计数器值减1
- 场景:假设有2个小弟和3个大佬都去洗澡,小弟不能和大佬一起洗,必须等大佬都洗完了小弟才可以去洗澡
// 洗澡线程
public class ThreadBath implements Runnable {
private String name;// 姓名
private CountDownLatch worm;// 小弟
private CountDownLatch mogul;// 大佬
public ThreadBath(String name, CountDownLatch worm, CountDownLatch mogul) {
this.name = name;
this.worm = worm;
this.mogul = mogul;
}
@Override
public void run() {
try {
System.out.println(this.name+":想要洗澡");
if(worm != null){
worm.await();
}
System.out.println