温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java多线程:如何使用CountDownLatch

发布时间:2025-03-19 08:48:27 阅读:101 作者:小樊 栏目:编程语言
Java开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

CountDownLatch 是 Java 并发包 java.util.concurrent 中的一个同步工具类,它允许一个或多个线程等待其他线程完成操作。CountDownLatch 的主要特点是有一个计数器,当计数器的值变为 0 时,所有等待的线程将被唤醒并继续执行。

以下是如何使用 CountDownLatch 的一个简单示例:

  1. 首先,导入所需的包:
import java.util.concurrent.CountDownLatch;
  1. 创建一个 CountDownLatch 实例,并指定计数器的初始值:
int numberOfThreads = 5;
CountDownLatch latch = new CountDownLatch(numberOfThreads);

在这个例子中,我们将计数器设置为 5,这意味着我们需要等待 5 个线程完成任务。

  1. 在每个线程中调用 countDown() 方法,以减少计数器的值:
class MyThread extends Thread {
    private CountDownLatch latch;

    public MyThread(CountDownLatch latch) {
        this.latch = latch;
    }

    @Override
    public void run() {
        try {
            // 执行任务
            System.out.println(Thread.currentThread().getName() + " 开始执行任务");
            Thread.sleep(1000);
            System.out.println(Thread.currentThread().getName() + " 任务执行完毕");

            // 任务完成后,减少计数器的值
            latch.countDown();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
  1. 在主线程中调用 await() 方法,等待计数器的值变为 0:
public class Main {
    public static void main(String[] args) throws InterruptedException {
        int numberOfThreads = 5;
        CountDownLatch latch = new CountDownLatch(numberOfThreads);

        for (int i = 0; i < numberOfThreads; i++) {
            Thread thread = new MyThread(latch);
            thread.start();
        }

        // 等待所有线程完成任务
        latch.await();
        System.out.println("所有线程任务执行完毕");
    }
}

在这个例子中,我们创建了 5 个线程,每个线程执行一个简单的任务。主线程调用 latch.await() 方法等待所有子线程完成任务。当所有子线程完成任务并调用 countDown() 方法后,计数器的值变为 0,主线程继续执行并打印 “所有线程任务执行完毕”。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×