Java CountDownLatch 使用

Java CountDownLatch 深度解析 CountDownLatch 是 Java 并发包中的一个同步辅助类,用于控制多个线程的同步执行。其核心机制是通过一个计数器,线程通过调用 countDown() 减少计数器,而其他线程通过 await() 方法等待计数器归零后继续执行。CountDownLatch 具有一次性使用、不可逆、灵活控制和高性能等特点,底层基于 AQS 框架实现。典型应用场景包括服务启动同步、并行计算、测试协调等。通过组合多个 CountDownLatch,还可以实现更复杂的多阶段控制。 阅读详情
使用
Java的concurrent包里面的CountDownLatch是一个非常实用的多线程控制工具类,其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。


public CountDownLatch(int count)  构造器,实例化一个倒计时器,count指定计数个数
public void countDown()   //计数减1
public void await() throws InterruptedException   //阻塞等待直到计数器中的个数为0或者线程中断
 public boolean await(long timeout, TimeUnit unit)   //阻塞等待直到计数器的个数减为0,或者线程中断,或者等待了指定超时时间之后
 public long getCount()  //获取计数器当前的数量

Demo

public class CountDownLatchTest  implements Runnable{
    static final CountDownLatch  end = new CountDownLatch(10);
    static final CountDownLatchTest  demo =new CountDownLatchTest();

    @Override
    public void run() {
        try {
            Thread.sleep(new Random().nextInt(10)*1000);
            System.out.println("check complete "+Thread.currentThread().getName());
            end.countDown();  //计数器减1
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(10);
        for (int i = 0; i < 10 ; i++)
            executor.submit(demo);

        try {
            end.await();
            System.out.println("Fire!");
            executor.shutdown();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

 

Java中使用CountDownLatch实现并发流程控制 CountDownLatch,它是 JDK 提供的并发流程控制的工具类,它是在 java.util.concurrent 包下,在 JDK1.5 之后加入的。应用场景举例:5个运动员参加马拉松比赛,好比五个线程,每个人跑完的时间不同,而比赛成绩统计必须要等待5个运动员都跑完才能往下进行。实现流程可以参考下图。... 阅读详情

相关推荐

【Java 多线程 6】countdownlatch用法

一、CountDownLatch简介 CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。 CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。 二、CountDownL

学Java,找哪吒 6898

CountDownLatch介绍和使用【Java多线程必备】

CountDownLatch介绍、特性、注意事项、使用案例(干货满满)

Mr.绵羊的知识星球 3万+

独立游戏开发者的新武器:实测腾讯混元3D自动绑骨,搭配Mixamo让角色动画制作效率翻倍

本文实测腾讯混元3D自动绑骨功能与Mixamo动画库的协同使用,显著提升独立游戏开发者的角色动画制作效率。通过解决卡通角色绑骨偏差、优化骨骼权重及动画状态机配置,使原本两周的流程缩短至三天,并分享Unity中的性能优化与版权合规要点。

weixin_42662605的博客 502

Java并发工具CountDownLatch使用详解

通过使用 CountDownLatch可以使当前线程阻塞,等待其他线程完成给定任务。可以类比旅游团导游要等待所有的游客到齐后才能去下一个景点。 CountDownLatch主要应用场景:一个线程等待多个线程完成给定任务后,然后执行后续的操作的场景。

warybee 1万+

Android加密开发实战:Spongy Castle集成与国密算法应用指南

在移动应用开发中,数据加密是保障用户隐私和信息安全的基石。其原理基于密码学算法,通过对数据进行编码转换,确保即使数据被截获也无法被未授权方解读。这项技术的核心价值在于为敏感信息提供机密性、完整性和身份验证,广泛应用于用户登录、本地存储、网络通信等场景。对于Android开发者而言,系统自带的加密功能有时无法满足需求,特别是涉及国密算法或更丰富算法套件时。本文聚焦于Spongy Castle这一专为Android定制的加密库,它有效解决了与系统内置Bouncy Castle的兼容性问题,并提供了对SM4等国密

weixin_27722377的博客 309

GD32H7实战:5步搞定YOLO轻量化模型部署到MCU(附避坑指南)

本文详细介绍了如何将YOLO轻量化模型部署到GD32H7 MCU的完整实战流程。通过五个关键步骤,涵盖环境搭建、模型训练、格式转换到工程集成,并重点分享了使用GD32AI-ModelZoo工具链进行MCU部署的避坑指南,帮助开发者在资源受限的边缘设备上实现高效目标检测。

weixin_29070861的博客 447

Java并发 - CountDownLatch详解

`CountDownLatch` 是 Java 中的一个同步工具类,它允许一个或多个线程等待其他线程完成操作。`CountDownLatch` 的主要思想是,一个线程等待其他线程完成一组操作,它在倒计时计数器的基础上工作,计数器的初始值是一个正整数,每当一个线程完成一项操作,计数器的值减一。当计数器的值变为零时,等待的线程被释放,可以继续执行。

--土拨鼠-- 2555

Ubuntu20.04下Intel RealSense D435i相机驱动配置全攻略(含ROS Noetic适配)

本文详细介绍了在Ubuntu20.04系统下配置Intel RealSense D435i相机驱动的完整流程,包括libRealsense SDK 2.0安装、ROS Noetic适配及常见问题解决方案。通过实战指南帮助开发者快速实现深度相机与ROS的集成,适用于机器人视觉和SLAM应用开发。

weixin_29281915的博客 513

Java 中 CountDownLatch 的基本用法

Java 中 CountDownLatch 的基本用法

JonTang的博客 1242

思必驰离线语音芯片:智能家居控制的核心引擎

思必驰离线语音芯片TH1520通过本地化语音识别技术,为智能家居带来革命性体验。该芯片具备200-600毫秒的快速响应、75分贝抗噪能力和双核异构设计,显著提升设备交互效率。支持自定义指令和10种音色选择,开发周期缩短至3天,BOM成本降低30%,是智能家居控制的核心引擎。

redis7keeper的博客 988

立项书8分钟定生死?手把手教你用ChatGPT辅助打造高水平申报书,让评审专家一看就想打高分!

宏大叙事、空话堆砌只会让评审绕晕,不如聚焦一个具体问题,拿出清晰的研究路径、扎实的设计方案,把“我想做什么、为什么做、打算怎么做”讲明白。对评审来说,关键不在你读了多少,而在你能否看清领域的共识、争议和空白,GPT的作用就在于帮你理清研究脉络,发现问题结构,聚焦那些还没被充分讨论的变量或方法,去提升综述的深度。之前要用到ProcessOn、Draw.io等工具画流程图,现在有了ai虽然方便了,但也需要多次调教,如果嫌麻烦,七哥给大家准备了课题申报常用的流程图,技术路线图,方便大家直接拿来编辑填空使用。

智能AI让学术科研更容易 291

java并发中CountDownLatch的使用

文章目录主线程等待子线程全都结束之后再开始运行等待所有线程都准备好再一起执行停止CountdownLatch的await java并发中CountDownLatch的使用 在java并发中,控制共享变量的访问非常重要,有时候我们也想控制并发线程的执行顺序,比如:等待所有线程都执行完毕之后再执行另外的线程,或者等所有线程都准备好了才开始所有线程的执行等。 这个时候我们就可以使用到CountDownL...

程序那些事 1万+

【nnUNetv2进阶】三、nnUNetv2 自定义网络-发paper必会

对于很多朋友来说,找到nnunet的网络结构位置的代码可能比较困难,因为nnunet的网络结构从else:代码中没有网络结构的类名,那么使用的网络是哪个呢?打开预处理后的数据集中的nnUNetPlans.json文件,如下图,configurations里面有2d、3d_fullres等,这些表示nnunet的模型,下面的network_class_name指的就是训练使用的模型结构,一般都是PlainConvUNet。

AI爱好者的博客,分享计算机领域相关知识 8758

java的CountDownLatch使用

基本使用 import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; public class ListAdd2 { private volatile static List list = new ArrayList(); public void add(){ list.add("cxf"); } public int size(){ return l

秃了也弱了 6517

冷门但实用:Python爬取微信公众号历史文章,突破微信反爬限制(2025有效)

2025年微信公众号爬取的核心是「冷门方法+指纹伪装」,而非常规接口破解,itchat-uos+Playwright组合是突破设备指纹的关键;登录态持久化、动态Token实时获取、频率严格控制是避免被封禁的三大核心;文章内容解析需解决2025新增的编码混淆问题,chardet+BeautifulSoup是冷门但有效的方案;合规是前提,爬取频率、数据用途需严格遵守平台/法律规则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3785

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

countdownlatch java_Java CountDownLatch使用方法

多线程可以确认所有线程任务执行结束(闭锁)CountDownLatch是一个同步辅助类,犹如倒计时计数器,创建对象时通过构造方法设置初始值,调用CountDownLatch对象的await()方法则处于等待状态,调用countDown()方法就将计数器减1,当计数到达0时,则所有等待者或单个等待者开始执行。Java代码packagecom.thread;importjava.util.conc...

weixin_35128544的博客 148

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java中CountDownLatch介绍与应用

  正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。 CountDownLatch是什么 CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrie...

寻找手艺人的专栏 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java并发之CountDownLatch

Java并发之CountDownLatch 目录 Java并发之CountDownLatch 1、什么是CountDownLatch 2、CountDownLatch如何工作的 3、方法说明 4、实例:一个线程等待其他线程运算结果,其他线程不需要阻塞等待 6、源码分析: 7、CountDownLatch内部实现: 7.1 await内部实现流程: 7.2 countDown内部...

Eric的博客 498

Java CountDownLatch

CountDownLatch

vivianXuejun的博客 291

Java之CountDownLatch原理解析

Java之CountDownLatch原理解析1. demo展示2. 原理解析 1. demo展示 代码逻辑展示了主线程中创建2个子线程分别去执行任务,主线程等2个子线程执行完毕后,再接着执行下面的代码; 常用场景: 分别计算,汇总结果。如,多个线程分别解析excel中的sheet,等待全部解析完毕后汇总结果; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; public class C

没啥简介 5362

Java中使用CountDownLatch进行多线程同步

CountDownLatch介绍在前面的Java学习笔记中,总结了Java中进行多线程同步的几个方法:1、synchronized关键字进行同步。2、Lock锁接口及其实现类ReentrantLock、ReadWriteLock锁实现同步。3、信号量Semaphore实现同步。其中,synchronized关键字和Lock锁解决的是多个线程对同一资源的并发访问问题。信号量Semaphore解决的是

Forever-守望 6767

Java CountDownLatch应用

Java的concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。 你可以向CountDownLatch对象设置一个初始的数字作为计数值,任何调用这个对象上的await()方法都会阻塞,直到这个计数器的计数值被其他的线程减为0为止。 ...

zhaoyunfei1的博客 198

什么是 Java 的 CountDownLatch?

类名作用:让一组线程等待,直到指定数量的事件或任务完成(计数器归零)。核心特性初始化时指定计数器值。线程通过减少计数器,await()等待计数器为零。

qq_63553317的博客 734

java CountDownLatch 原理及使用

countDownLatch可以理解为一个倒序计数器,在初始化时给计数器赋值,每次操作计数器减1,等计数器为0后才可继续向下执行。通过该特性可以在特定任务执行前使用多线程处理,例如多线程读取文件,然后对文件拼接整合。 使用案例 以下代码演示初始CountDownLatch为2的执行流程,当new CountDownLatch(3)时程序会一直阻塞。 public static void main(String[] args) throws InterruptedEx...

shaofei_huai的博客 2411

countdownlatch java_JAVA多线程CountDownLatch使用详解

前序:上周测试给开发的同事所开发的模块提出了一个bug,并且还是偶现。经过仔细查看代码,发现是在业务中启用了多线程,2个线程同时跑,但是新启动的2个线程必须保证一个完成之后另一个再继续运行,才能消除bug。什么时候用?多线程是在很多地方都会用到的,但是我们如果想要实现在某个特定的线程运行完之后,再启动另外一个线程呢,这个时候CountDownLatch就可以派上用场了怎么用?先看看普通的多线程代码...

weixin_32307599的博客 430

Java CountDownLatch介绍

本文目录1、CountDownLatch介绍2、CountDownLatch主要方法 1、CountDownLatch介绍 CountDownLatch(同步工具类)允许一个或多个线程等待其他线程完成操作。在使用CountDownLatch 时,需要指定一个整数值,此值是线程将要等待的操作数。当某个线程为了要执行这些操作而等待时,需要调用 await 方法。await 方法让线程进入休眠状态直到所有等待的操作完成为止。 当等待的某个操作执行完成,它使用 countDown 方法来减少 CountDownLa

warybee 413
上一篇: Java Semaphore使用
下一篇: Java CyclicBarrier使用
思维的深度
博客等级 码龄11年 2万+粉丝 391原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值