Java并发编程:CountDownLatch的应用案例 原创 柔光的暖阳◎ 2024-10-31 16:09 16阅读 0赞 Java并发编程中,`CountDownLatch` 是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。`CountDownLatch`通过一个计数器来实现,该计数器在初始化时被设置一个特定的值,每当一个任务执行完毕时,计数器的值就会减少,当计数器的值减少到0时,那些等待在这个`CountDownLatch`上的线程就会被唤醒。 以下是`CountDownLatch`的一个应用案例: ###场景描述假设我们有一个任务,需要等待多个线程完成各自的工作后,主线程才能继续执行。比如,我们有一个主线程需要等待三个子线程完成各自的数据加载任务后,才能进行数据分析。 ###代码示例```javaimport java.util.concurrent.CountDownLatch; public class CountDownLatchExample { public static void main(String[] args) throws InterruptedException { final int threadCount =3; CountDownLatch latch = new CountDownLatch(threadCount); // 创建并启动三个线程,每个线程完成一项任务 for (int i =0; i < threadCount; i++) { new Thread(new WorkerThread(latch, i)).start(); } // 主线程等待所有子线程完成 latch.await(); //所有子线程完成后,主线程继续执行 System.out.println("所有数据加载完成,开始数据分析"); } static class WorkerThread implements Runnable { private final CountDownLatch latch; private final int threadNumber; public WorkerThread(CountDownLatch latch, int threadNumber) { this.latch = latch; this.threadNumber = threadNumber; } @Override public void run() { try { //模拟数据加载任务 System.out.println("线程 " + threadNumber + "正在加载数据..."); Thread.sleep((long) (Math.random() *10000)); System.out.println("线程 " + threadNumber + " 数据加载完成"); } catch (InterruptedException e) { e.printStackTrace(); } finally { //任务完成后,计数器减1 latch.countDown(); } } } } ```###代码解释1. `CountDownLatch`被初始化为3,因为我们有三个线程需要等待。 2. 创建三个线程,每个线程执行`WorkerThread`的实例,该实例接收`CountDownLatch`对象和线程编号。 3.每个线程在完成其任务后调用`countDown()`方法,这会将`CountDownLatch`的计数减1。 4. 主线程调用`await()`方法,这会阻塞直到`CountDownLatch`的计数达到0,即所有子线程都调用了`countDown()`方法。 这个案例展示了如何使用`CountDownLatch`来确保主线程在所有子线程完成工作后才继续执行。 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 Java并发编程:CountDownLatch的实战应用 Java并发编程中,`CountDownLatch` 是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。`CountDownLatch`通 红太狼/ 2024年11月14日 01:21/ 0 赞/ 1 阅读
相关 Java并发工具:CountDownLatch、CyclicBarrier的应用案例 Java并发工具类是Java并发编程中非常重要的一部分,它们帮助我们处理多线程之间的协调问题。`CountDownLatch`和`CyclicBarrier`是两个常用的同步辅 水深无声/ 2024年11月01日 14:51/ 0 赞/ 13 阅读
相关 Java并发编程:CountDownLatch的应用案例 Java并发编程中,`CountDownLatch` 是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。`CountDownLatch`通 柔光的暖阳◎/ 2024年10月31日 16:09/ 0 赞/ 17 阅读
相关 Java并发编程:CountDownLatch应用实例 CountDownLatch是Java中一种用于协调多个线程的工具。当一个线程等待其他线程完成某个操作,就可以使用CountDownLatch。 以下是一个简单的CountD 曾经终败给现在/ 2024年10月21日 09:39/ 0 赞/ 39 阅读
相关 Java并发编程:CountDownLatch案例实战 `CountDownLatch`是Java并发工具包(`java.util.concurrent`)中的一个类,主要用于协调多个线程的执行顺序。 以下是一个简单的`Count 左手的ㄟ右手/ 2024年10月16日 14:54/ 0 赞/ 56 阅读
相关 Java中的并发工具:CountDownLatch应用案例 CountDownLatch是Java中一种用于线程同步的工具,它可以帮助一个或多个工作线程等待其他线程执行完特定操作后释放计数。 以下是一个CountDownLatch的应 男娘i/ 2024年10月15日 20:33/ 0 赞/ 47 阅读
相关 Java并发编程实战:CountDownLatch的详细应用案例 CountDownLatch在Java并发编程中扮演着重要的角色,它是一个同步工具,用于协调多个线程的活动。 以下是一些CountDownLatch的应用案例: 1. ** 灰太狼/ 2024年10月08日 17:51/ 0 赞/ 53 阅读
相关 Java并发编程实战:CountDownLatch案例 CountDownLatch是Java并发工具箱中的一个类,它主要用于协调多个线程的执行。 下面是一个简单的CountDownLatch案例: ```java import 客官°小女子只卖身不卖艺/ 2024年09月10日 02:54/ 0 赞/ 90 阅读
还没有评论,来说两句吧...