CountDownLatch :闭锁,在完成某些运算时,只有其他所有线程的运算全部完成,当前运算才继续执行

方法:

countDown​():减少锁存器的计数,如果计数达到零,释放所有等待的线程

await​():导致当前线程等到锁存器向下计数为零,除非线程为 interrupted

案例分析:

我们要统计50个线程执行完LatchDemo中的run()之后的时间,这时我们需要在LatchDemo中定义一个CountDownLatch闭锁 CountDownLatch创建的时候可以给定一个初始化值

public class CountDownLatchTest {public static void main(String[] args) {//构造一个以给定计数初始化的 CountDownLatch//初始值即为要统计的线程数final CountDownLatch latch = new CountDownLatch(50);LatchDemo ld = new LatchDemo(latch);long start = System.currentTimeMillis();for (int i = 0; i < 50; i++) {new Thread(ld).start();}/*调用CountDownLatch的await()方法,只有该对象的锁存器计数为0时,即线程全部走完后,程序才会继续往下走这时就能统计出来50个线程都执行完之后的时间*/try {latch.await();} catch (InterruptedException e) {}long end = System.currentTimeMillis();System.out.println("耗费时间为:" + (end - start));}}class LatchDemo implements Runnable {private CountDownLatch latch;public LatchDemo(CountDownLatch latch) {this.latch = latch;}@Overridepublic void run() {try {for (int i = 0; i < 50000; i++) {if (i % 2 == 0) {System.out.println(i);}}} finally {//当线程执行完run方法之后,调用countDown()使锁存器计数减1latch.countDown();}}}

CountDownLatch闭锁相关推荐

  1. 并发编程-16AQS同步组件之CountDownLatch 闭锁

    文章目录 脑图 CountDownLatch闭锁 示例 Thread#join() CountDownLatch CountDownLatch示例二 await一直等待其他线程执行完 CountDow ...

  2. 聊聊高并发(二十六)解析java.util.concurrent各个组件(八) 理解CountDownLatch闭锁

    CountDownLatch闭锁也是基于AQS实现的一种同步器,它表示了"所有线程都等待,直到锁打开才继续执行"的含义.它和Semaphore的语意不同, Semaphore的获取 ...

  3. 同步工具之CountDownLatch闭锁

    CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待 ,即CountDownLatch允许一个或多个线程等待其他线程完成操作.闭锁可以延迟 ...

  4. 同步机制之--java之CountDownLatch闭锁

    CountDownLatch闭锁 1.类介绍 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待.用给定的计数初始化 CountDownLatch.CountDown ...

  5. CountDownLatch闭锁,join和yield的区别

    CountDownLatch闭锁 CountDownLatch是一个同步工具类,join的增强版.允许一个或多个线程,等待其他一组线程完成操作,再继续执行 public CountDownLatch( ...

  6. 最接地气的详解CountDownLatch闭锁应用与实现机制

    Hello,大家好,我是Steafan,今天为大家带来最接地气的详解CountDownLatch闭锁应用与实现机制.之前在编写多线程高并发业务场景时,因为那时刚刚接触高并发程序的编写,所以从网上了解了 ...

  7. Java并发编程笔记之 CountDownLatch闭锁的源码分析

    转 自: Java并发编程笔记之 CountDownLatch闭锁的源码分析 ​ JUC 中倒数计数器 CountDownLatch 的使用与原理分析,当需要等待多个线程执行完毕后在做一件事情时候 C ...

  8. java闭锁_java8中CountDownLatch闭锁

    重新修改程序,每次线程执行减少1 package com.gwolf; import java.util.concurrent.CountDownLatch; public class TestCou ...

  9. 闭锁java_java多线程学习十::::CountDownLatch闭锁

    请看以下的代码 package rs.thread.day0504; import java.util.concurrent.CountDownLatch; /** * @auther rs * @d ...

最新文章

  1. Jeff Dean回顾谷歌2021
  2. msf rhosts设置文件_聊一聊基于 msf 的免杀项目测试过程
  3. 火星上的甲烷从哪里来,科学家用算法给出了答案
  4. python爬虫详细步骤-Python爬虫的步骤和工具
  5. shell 脚本从1加到100
  6. 【学习笔记】JAVA基础——异常处理部分
  7. 【HTML】底部弹窗插件代码
  8. 【编程】用户体验与软件产品
  9. WF4.0 RC 对比 Beta2 的变化
  10. 专访《白话区块链》作者蒋勇:学习区块链空谈不如实践
  11. html match函数,match函数 Match函数概述
  12. easyui label显示不全_Easyui 扩展行显示细节_EasyUI 教程
  13. 链改重塑信任,打造零风险的产业生态体系!
  14. 网易企业邮箱管理功能
  15. Win11右键菜单改回Win10
  16. 树莓派4B openwrt wifi 提升速度
  17. 艾伟:WCF从理论到实践(3):八号当铺之黑色契约
  18. 如何删干净MySQL数据库
  19. 国密局发布16项密码行业标准 2022年5月1日起实施
  20. OSChina 娱乐弹弹弹——自古英雄多好色,人不风流枉少年

热门文章

  1. [密码学] RSA利用解密指数分解n
  2. 【Python小程序】必备软件系列之文字识别提取,前台再也不同担心纸质转电子文件啦~
  3. ARMV8/ARMV9指令集概述(翻译)
  4. 03-cache的查询原理
  5. 软件调试学习笔记(三)—— 调试事件的处理
  6. 11.Windows线程切换_线程优先级
  7. 【Rsyslog】Ubuntu 升级rsyslog
  8. 1.2 实例:封装图书信息类
  9. Codeforces Round #501 (Div. 3)【未完结】
  10. 1030 Travel Plan (30 分) 【难度: 中 / 知识点: 最短路】