【Java线程】CountDownLatch

CountDownLatch基于线程计数器来实现并发访问控制,主要用于主线程等待其它子线程都执行完毕后再执行某某操作。

其使用步骤:

1.主线程定义CountDownLatch,参数等于要执行的子线程个数;

2.子线程运行完后掉latch.countDown,让计数器减去一,如果子线程定义在别处需要内置引用指向latch,通常可以通过构造函数传入;

3.每个子线程都执行完后,latch的计数器减成了0,此时停顿在latch.await()上的主线程便开始执行。

程序:

复制代码
package ufo;

import java.util.concurrent.CountDownLatch;

public class LatchTest {
    public static void main(String... args) {
        System.out.println("主线程开始");
        final CountDownLatch latch=new CountDownLatch(2);
        
        new Thread() {
            public void run() {
                try {
                    System.out.println("匿名线程一开始");
                    Thread.sleep(1000);
                    latch.countDown();
                    System.out.println("匿名线程一执行完毕");
                }catch(Exception ex) {
                    ex.printStackTrace();
                }
            }
        }.start();
        
        new Thread() {
            public void run() {
                try {
                    System.out.println("匿名线程二开始");
                    Thread.sleep(2000);
                    latch.countDown();
                    System.out.println("匿名线程二执行完毕");
                }catch(Exception ex) {
                    ex.printStackTrace();
                }
            }
        }.start();
        
        try {
            System.out.println("等待两个匿名线程执行完毕");
            latch.await();
            System.out.println("两个匿名线程已执行完毕,主线程继续执行");
        }catch(Exception ex) {
            ex.printStackTrace();
        }
    }
}
复制代码

输出:

主线程开始
匿名线程一开始
等待两个匿名线程执行完毕
匿名线程二开始
匿名线程一执行完毕
匿名线程二执行完毕
两个匿名线程已执行完毕,主线程继续执行

-END-

posted @   逆火狂飙  阅读(95)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2019-09-30 ZT: spring的RestTemplate使用指南
2017-09-30 【Canvas与艺术】金属底座洞眼红心按钮
2017-09-30 【Canvas与标志】白座红芯辐射标志
2013-09-30 打通Fedora19的vsftpd服务
2013-09-30 打通Fedora19的ssh服务
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示