Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CountDownLatch

CountDownLatch

作者头像
收心
发布于 2023-05-27 08:18:52
发布于 2023-05-27 08:18:52
17700
代码可运行
举报
文章被收录于专栏:Java实战博客Java实战博客
运行总次数:0
代码可运行

什么是CountDownLatch?

CountDownLatch是Java中的一个同步工具类,它可以让一个或多个线程等待其他线程完成操作后再执行。CountDownLatch的作用是允许一个或多个线程等待其他线程完成操作后再执行。

CountDownLatch有两个方法:

  1. countDown():每次调用该方法会将计数器减1。
  2. await():会阻塞当前线程,直到计数器的值为0。

CountDownLatch的注意事项

  1. CountDownLatch的计数器只能减少,不能增加。
  2. CountDownLatch的await()方法会阻塞当前线程,直到计数器的值为0。
  3. CountDownLatch的countDown()方法可以在任何地方调用,不一定要在await()方法之前。

真实的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        int threadCount = 10;
        CountDownLatch latch = new CountDownLatch(threadCount);
        for (int i = 0; i < 1000; i++) {
            new Thread(()->{
          
                System.out.println("我是线程:");
            }).start();
            latch.countDown();
        }
        try {
            latch.await();
        } catch (InterruptedException e) {
            // await会抛出异常
            e.printStackTrace();
        }
        System.out.println("所有线程执行完毕 " +integerThreadLocal.get());
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java 并发(7)CountDownLatch 源码分析
这就是 CountDownLatch 的内部机制,看起来很简单,无非就是阻塞一部分线程让其在达到某个条件之后再执行。但是 CountDownLatch 的应用场景却比较广泛,只要你脑洞够大利用它就可以玩出各种花样。最常见的一个应用场景是开启多个线程同时执行某个任务,等到所有任务都执行完再统计汇总结果。下图动态演示了闭锁阻塞线程的整个过程。
JavaFish
2020/04/07
2400
Java之CountDownLatch原理浅析
调用countDown方法时,N就会减1,CountDownLatch的await方法会阻塞当前线程,直到N变成零。
闻说社
2024/11/13
1170
Java之CountDownLatch原理浅析
CyclicBarrier 和 CountDownLatch
在多线程编程中,我们经常会遇到一些需要线程间协同工作的场景。CyclicBarrier 和 CountDownLatch 就是两种常用的同步工具,它们能够帮助我们实现线程间的协调和同步。本文将深入探讨这两种同步工具的实现原理,并附上代码演示。
疯狂的KK
2023/08/14
2130
CyclicBarrier 和 CountDownLatch
AQS、CountDownLatch、CyclicBarrier、Semaphore、Exchanger
在编程的竞技场中,多线程与并发是每一级大牛必备的技能!今天,就让我们深入了解Java并发武器库中的“五神兵”——AQS、CountDownLatch、CyclicBarrier、Semaphore、Exchanger的强大之处。他们如棋盘上的棋子,既能彼此协调,又能独当一面,解决了无数线程之问的冲突、同步与协作难题。
疯狂的KK
2024/06/04
1600
AQS、CountDownLatch、CyclicBarrier、Semaphore、Exchanger
CountDownLatch熟悉与使用场景
CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。
用户6182664
2020/05/07
1.4K0
countDownLatch
1.背景: countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 存在于java.util.cucurrent包下。 2.概念 countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就
小石头
2022/11/10
2530
CountDownLatch用法详解
CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。
全栈程序员站长
2022/09/14
9.2K0
CountDownLatch用法详解
并发工具类:如何在JDK 8、17与21中使用CountDownLatch、Semaphore和CyclicBarrier?
本文将为你全面解析这些工具类的原理、使用方法及其在不同Java版本中的优化点,助你轻松解决并发任务中的同步问题。
猫头虎
2024/12/24
2010
快来看看!AQS 和 CountDownLatch 有怎么样的关系?
" CountDownLatch 一个同步辅助工具,同样是基于 AQS 实现,本篇文件主要是介绍 CountDownLatch 的使用,以及源码。 "
程序员小航
2020/11/23
3890
快来看看!AQS 和  CountDownLatch 有怎么样的关系?
Juc并发编程14——线程计数器CountdownLatch源码剖析
多任务同步神器,它允许一个或多个线程,等待其它线程完成工作,比如我们现在有一个需求:
半旧518
2022/10/26
3280
Juc并发编程14——线程计数器CountdownLatch源码剖析
[Java] CountDownLatch 与 CyclicBarrier
A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.
wOw
2018/09/18
4330
并发是个什么鬼之同步工具类CountDownLatch
扯淡 写这篇文章,我先酝酿一下,实不相瞒,脱离底层太久了,更确切的情况是,真没曾认真研究过。就目前来说,很多框架包括工具类已经把实现封装的很深,你只需轻轻的调用一下API,便不费半点力气。以至于大家会产生种种错觉,开发无非如此,总觉得混个三五年,也能混上CTO,迎娶白富美,当然这毕竟是少数。 我觉的大多数开发者的困惑是,底层的东西即使深入了解,如果不是BAT这种重研发型,自造血的公司,对于目前的工作亦或者将来的工作可能并没有什么用武之地。 正题 CountDownLatch 又是大神 Doug Lea的又
小柒2012
2018/04/13
9201
并发是个什么鬼之同步工具类CountDownLatch
CountDownLatch——闭锁的实现之一
CountDownLatch实际上是一种闭锁实现。闭锁:是一种同步工具类,可以延迟线程的进度知道其到达终止状态——《Java并发编程实战》。这个怎么解释呢?简单来说,就是有1个线程需要等待其余10个线程都执行完毕后再执行,这个时候就可以使用闭锁,也即CountDownLatch(当然闭锁的实现并不止这一种)。关于对闭锁的详细解释请参考《Java并发编程实战》P79。 CountDownLatch中有一个计数器,该计数器通过构造方法传递,表示需要完成的工作。有两个主要的方法:countDown——表示计数器减
用户1148394
2018/01/09
7460
CountDownLatch——闭锁的实现之一
腾讯面试居然跟我扯了半小时的CountDownLatch
一个长头发、穿着清爽的小姐姐,拿着一个崭新的Mac笔记本向我走来,看着来势汹汹,我心想着肯定是技术大佬吧!但是我也是一个才华横溢的人,稳住我们能赢。
万猫学社
2022/04/22
2150
腾讯面试居然跟我扯了半小时的CountDownLatch
面试官:实战中用过CountDownLatch吗?详细说一说,我:啊这...
在很多的面经中都看到过提问 CountDownLatch 的问题,正好我们最近也在梳理学习AQS(抽象队列同步器),而CountDownLatch又是其中典型的代表,我们今天就继续来学一下这个同步工具类!
JavaBuild
2024/05/27
1670
面试官:实战中用过CountDownLatch吗?详细说一说,我:啊这...
深入剖析Java中的CountDownLatch:同步协作的利器
CountDownLatch是一个同步工具类,它允许一个或多个线程等待其他线程完成操作。CountDownLatch用一个给定的计数器来初始化,该计数器的值表示需要等待完成的任务数量。每当一个线程完成其任务后,计数器的值就会减一。当计数器的值达到零时,表示所有需要等待的任务都已经完成,此时在CountDownLatch上等待的线程将被唤醒并可以继续执行。
公众号:码到三十五
2024/03/19
5430
深入剖析Java中的CountDownLatch:同步协作的利器
倒计时器:CountDownLatch
原文:https://www.relaxheart.cn/to/master/blog?uuid=83 CountDownLatch是一个非常实用的多线程控制工具类。常用的就下面几个方法: Count
七七分享
2019/05/19
7480
腾讯面试居然跟我扯了半小时的CountDownLatch
一个长头发、穿着清爽的小姐姐,拿着一个崭新的Mac笔记本向我走来,看着来势汹汹,我心想着肯定是技术大佬吧!但是我也是一个才华横溢的人,稳住我们能赢。
全栈程序员站长
2022/09/14
1910
腾讯面试居然跟我扯了半小时的CountDownLatch
五分钟教会你JUC中的“CountDownLatch”和“CyclicBarrier”应该如何使用
JUC作为Java面试的必考板块,其重要性不言而喻。学习JUC包下的常用类不仅仅是在学习这些类怎么使用,更是在学习这些类中所蕴藏的设计思维。
程序员牛肉
2024/09/30
1220
五分钟教会你JUC中的“CountDownLatch”和“CyclicBarrier”应该如何使用
Java中的countDownLatch
1.背景: countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 存在于java.util.cucurrent包下 2.概念 countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就可
Vincent-yuan
2021/07/16
5810
相关推荐
Java 并发(7)CountDownLatch 源码分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验