CountDownLatch: .await方法 用到共享锁 getState 是一个计数器,当计数器大于0获取共享锁,若等于0不需要加锁
CountDownLatch:内部有一个sync同步工具集成了AQS
public class CountDownLatchDemo {
public static void main(String[] args) throws InterruptedException {
//计算器为3
CountDownLatch countDownLatch = new CountDownLatch(3);
new Thread(() -> {
//计算器-1
countDownLatch.countDown();
}).start();
new Thread(() -> {
//计算器-1
countDownLatch.countDown();
}).start();
new Thread(() -> {
//计算器-1
countDownLatch.countDown();
}).start();
//使用场景:1、并行请求,比如100个线程同时进行,可以使用countDown结合await阻塞处理
//2、
countDownLatch.await();//主线程阻塞,直到计算器变为0
System.out.println("完毕");
}
}
运行结果
完毕
Process finished with exit code 0
网友评论