Java CountdownLatch的用法及使用案例详解
它可以使我们在多线程编程中实现线程间协作,它可以让一个或多个线程等待其他线程完成操作后再执行。await()方法会阻塞当前线程直到计数器变为0。最后在主线程中调用await()方法等待所有人都到齐:
- 本文目录导读:
- 1、CountdownLatch简介
- 2、使用案例
- 3、标签:
在Java编程中,CountDownLatch是一种非常有用的工具类。它可以使我们在多线程编程中实现线程间协作,控制程序执行流程和顺序。本文将详细介绍Java CountdownLatch的用法以及使用案例。
CountdownLatch简介
CountdownLatch是一个同步辅助类,它可以让一个或多个线程等待其他线程完成操作后再执行。它通过一个计数器来实现这个功能,计数器初始值为指定的值,在执行过程中进行递减操作,当计数器减为0时所有等待者开始执行。
CountdownLatch有两个重要方法:countDown()和await()。countDown()方法将计数器减1,await()方法会阻塞当前线程直到计数器变为0。
使用案例
下面我们通过一个简单的示例来演示CountdownLatch的使用。
场景:假设有三个人(A、B、C)参加比赛,并且需要等到所有人都到齐后才能开始比赛。
首先定义一个CountDownLatch对象:
“`
private static CountDownLatch countDownLatch = new CountDownLatch(3);
然后创建三个线程模拟三个人:
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(“A已到达比赛场地”);
countDownLatch.countDown();
}
});
Thread t2 = new Thread(new Runnable() {
System.out.println(“B已到达比赛场地”);
![Java CountdownLatch的用法及使用案例详解缩略图 Java CountdownLatch的用法及使用案例详解](https://www.72715.net/wp-content/uploads/2023/05/89b37fe932a9205af7d5d8bda3e57e45.png)
Thread t3 = new Thread(new Runnable() {
System.out.println(“C已到达比赛场地”);
在每个线程中都调用了countDownLatch的countDown()方法,表示一个人已经到齐。
最后在主线程中调用await()方法等待所有人都到齐:
try {
countDownLatch.await();
} catch (InterruptedException e) {
}
System.out.println(“所有人已经到齐,比赛开始!”);
运行程序,输出结果如下:
A已到达比赛场地
B已到达比赛场地
C已到达比赛场地
所有人已经到齐,比赛开始!
我们可以看出,在三个线程都执行完countDown()方法后,主线程才会继续执行。
通过上面的案例我们可以看出CountdownLatch的使用非常简单。它是Java多线程编程中非常有用的工具类之一。它可以帮助我们控制程序执行流程和顺序,并且可以在多个线程之间实现协作。
标签:
Java、CountdownLatch、多线程、协作、编程