1)功能

CountDownLatch是一个同步的辅助类,允许一个或多个线程,等待其他一组线程完成操作,再继续执行。

2)原理:

CountDownLatch是通过一个计数器来实现的,计数器的初始值为需要等待线程的数量。

eg:CountDownLatch c = new CountDownLatch(10); // 等待线程的数量为10

主线程调用CountDownLatch的await()方法会阻塞当前线程(即:主线程在闭锁上等待),直到计数器的值为0。
当一个工作线程完成了自己的任务后,调用CountDownLatch的countDown()方法,计数器的值就会减1。
当计数器值为0时,说明所有的工作线程都执行完了,此时,在闭锁上等待的主线程就可以恢复执行任务。

3)应用场景

倒数计时器
例如:一种典型的场景就是火箭发射。在火箭发射前,为了保证万无一失,往往还要进行各项设备、仪器的检查。 只有等所有检查完毕后,引擎才能点火。这种场景就非常适合使用CountDownLatch。
它可以使得点火线程,等待所有检查线程全部完工后,再执行

4)使用方式

static final CountDownLatch end = new CountDownLatch(10);
end.countDown();
end.await();

CountDownLatch——常用并发工具类相关推荐

  1. 常用并发工具类(锁和线程间通信工具类)

    常用并发工具类总结 JUC 下的常用并发工具类(锁和线程间通信工具类),主要包括 ReentrantLock.ReentrantReadWriteLock.CountDownLatch.CyclicB ...

  2. 常用并发工具类(并发集合类)

    文章目录 概述 BlockingQueue ArrayBlockingQueue 数据存储相关属性 阻塞特性相关属性 主要方法 LinkedBlockingQueue LinkedBlockingQu ...

  3. 常用并发工具类(线程池)

    文章目录 概述 ThreadPoolExecutor ThreadPoolExecutor 的主要属性 Worker 主要属性 线程池的状态 线程池的状态流转 线程池提交任务的执行流程 线程数量的设置 ...

  4. JUC 常用 4 大并发工具类

    欢迎关注方志朋的博客,回复"666"获面试宝典 什么是JUC? JUC就是java.util.concurrent包,这个包俗称JUC,里面都是解决并发问题的一些东西 该包的位置位 ...

  5. 第十章_多线程(2)_线程池原子性并发工具类

    目录 一.线程池 1 - 线程状态 2 - 线程池 3 - Executors线程池 二.Volatile 三.原子性 四.并发工具类 1 - 并发工具类-Hashtable 2 - 并发工具类-Co ...

  6. Java多线程系列(九):CountDownLatch、Semaphore等4大并发工具类详解

    之前谈过高并发编程系列:4种常用Java线程锁的特点,性能比较.使用场景 ,以及高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) 今天主要介绍concurre ...

  7. 【重难点】【JUC 02】volitale 常用模式 、JUC 下有哪些内容 、并发工具类

    [重难点][JUC 02]volitale 常用模式 .JUC 下有哪些内容 .并发工具类 文章目录 [重难点][JUC 02]volitale 常用模式 .JUC 下有哪些内容 .并发工具类 一.v ...

  8. 【搞定Java并发编程】第24篇:Java中的并发工具类之CountDownLatch

    上一篇:Java中的阻塞队列 BlockingQueue 详解 本文目录: 1.CountDownLatch的基本概述 2.CountDownLatch的使用案例 3.CountDownLatch的源 ...

  9. Java并发工具类(闭锁CountDownLatch)

    并发工具类系列: Java并发工具类(闭锁CountDownLatch) Java并发工具类(栅栏CyclicBarrier) Java并发工具类(信号量Semaphore) 闭锁是一种同步工具类,可 ...

最新文章

  1. python3.5怎么使用-Python3.5中NumPy模块的使用图文教程
  2. 优化定制化abap代码必须遵守的经典黄金规则
  3. JZOJ 5691. 【GDOI2018Day2模拟4.25】求和
  4. java求期望_Java 11的期望
  5. 智能音箱音效哪个好_华为支浩:音质好是底线,AI基本功扎实让智能音箱不再是“玩具”...
  6. 阿里的事前验尸_(不太完全)100天的代码-验尸
  7. socket 请求Web服务器过程
  8. java什么是同步_什么是同步?什么是互斥?
  9. rest功能java,java – 功能翻转REST端点的注释
  10. 【分享】如果我没有那么优秀,我研究生阶段选择机器学习方向还有出路吗?...
  11. hadoop安装教程(一次填完所有的坑)
  12. 一键重装深度linux系统下载,一键安装操作系统下载win7
  13. 未来世界的幸存者-阮一峰
  14. 正运动技术CAD导图软件配合控制器的使用方法
  15. 程序 卡塔_卡塔斯码
  16. 笔记13-1(C语言 三子棋)
  17. snaker并行任务示例
  18. 编译make px4_fmu-v2_default upload时,报错ERROR Board can accept larger flash images (2080768 bytes)
  19. [静态时序分析简明教程(三)]备战秋招,如何看懂一个陌生的timing report
  20. 类别不均衡问题之loss大集合:focal loss, GHM loss, dice loss 等等

热门文章

  1. 编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。...
  2. EF 5.0 帮助类 增删改查
  3. 在asp.net中使用jQuery实现类似QQ网站的图片切割效果
  4. 设置oracle服务自动启动
  5. [转]JSP常用指令
  6. DDD理论学习系列(6)-- 实体
  7. java软件设计模式只单例设计模式
  8. linux 故障监控必备五款软件
  9. 关于nil和 null和NSNull的相关问题
  10. 【译】让垃圾回收器高效工作(四)