Java:CountDownLatch等待所有线程执行结束后继续执行

简介: Java:CountDownLatch等待所有线程执行结束后继续执行

CountDownLatch可以使一个或多个线程等待其他线程各自执行完毕后再执行


class WorkThread implements Runnable {
    private CountDownLatch countDownLatch;
    public WorkThread(CountDownLatch countDownLatch) {
        this.countDownLatch = countDownLatch;
    }
    @Override
    public void run() {
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + " 干活结束");
        this.countDownLatch.countDown();
    }
}
package com.demo.atomic;
import java.util.concurrent.CountDownLatch;
public class countDownLatchDemo {
    public static void main(String[] args) {
        // 初始化等待线程个数: 2个
        CountDownLatch countDownLatch = new CountDownLatch(2);
        WorkThread workThread1 = new WorkThread(countDownLatch);
        WorkThread workThread2 = new WorkThread(countDownLatch);
        new Thread(workThread1).start();
        new Thread(workThread2).start();
        // 阻塞主线程,等待子线程全部结束继续
        try {
            countDownLatch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("结束了");
    }
}

如果不等待,执行结果


结束了
Thread-0 干活结束
Thread-1 干活结束

如果等待, 执行结果

Thread-1 干活结束
Thread-0 干活结束
结束了

相关文章
|
1天前
|
存储 安全 搜索推荐
深入剖析Java中的CountDownLatch:同步协作的利器
深入剖析Java中的CountDownLatch:同步协作的利器
|
2天前
|
Java
Runnable+CountDownLatch多线程的等待和通知
Runnable+CountDownLatch多线程的等待和通知
11 3
|
1天前
|
监控 Java 调度
Java并发编程:深入理解线程池
【6月更文挑战第26天】在Java并发编程的世界中,线程池是提升应用性能、优化资源管理的关键组件。本文将深入探讨线程池的内部机制,从核心概念到实际应用,揭示如何有效利用线程池来处理并发任务,同时避免常见的陷阱和错误实践。通过实例分析,我们将了解线程池配置的策略和对性能的影响,以及如何监控和维护线程池的健康状况。
7 1
|
1天前
|
存储 缓存 Java
老程序员分享:Java并发编程:线程池的使用
老程序员分享:Java并发编程:线程池的使用
|
1天前
|
Java 数据库连接 调度
Java多线程,对锁机制的进一步分析
Java多线程,对锁机制的进一步分析
|
1天前
|
Java
Java多线程notifyAll()方法
Java多线程notifyAll()方法
|
1天前
|
存储 设计模式 并行计算
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
CopyOnWriteArrayList:深入理解Java中的线程安全List原理和应用
|
2天前
|
Java 测试技术 开发者
Java并发编程:深入理解线程池
本文将带领读者深入了解Java中的线程池,探索其内部机制、使用场景以及如何有效地利用线程池来提高程序的性能和可维护性。我们将通过实例演示如何创建和配置线程池,并讨论常见的并发模式和最佳实践。文章旨在为开发者提供实用的线程池应用知识,帮助他们在面对多线程编程挑战时,能够设计出更加高效和稳定的系统。
|
2天前
|
安全 Java 开发者
如何在Java中实现线程安全的单例模式
如何在Java中实现线程安全的单例模式
|
3天前
|
缓存 监控 安全
深入理解Java中的线程池和并发编程
深入理解Java中的线程池和并发编程

热门文章

最新文章