CountDownLatch——常用并发工具类
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——常用并发工具类相关推荐
- 常用并发工具类(锁和线程间通信工具类)
常用并发工具类总结 JUC 下的常用并发工具类(锁和线程间通信工具类),主要包括 ReentrantLock.ReentrantReadWriteLock.CountDownLatch.CyclicB ...
- 常用并发工具类(并发集合类)
文章目录 概述 BlockingQueue ArrayBlockingQueue 数据存储相关属性 阻塞特性相关属性 主要方法 LinkedBlockingQueue LinkedBlockingQu ...
- 常用并发工具类(线程池)
文章目录 概述 ThreadPoolExecutor ThreadPoolExecutor 的主要属性 Worker 主要属性 线程池的状态 线程池的状态流转 线程池提交任务的执行流程 线程数量的设置 ...
- JUC 常用 4 大并发工具类
欢迎关注方志朋的博客,回复"666"获面试宝典 什么是JUC? JUC就是java.util.concurrent包,这个包俗称JUC,里面都是解决并发问题的一些东西 该包的位置位 ...
- 第十章_多线程(2)_线程池原子性并发工具类
目录 一.线程池 1 - 线程状态 2 - 线程池 3 - Executors线程池 二.Volatile 三.原子性 四.并发工具类 1 - 并发工具类-Hashtable 2 - 并发工具类-Co ...
- Java多线程系列(九):CountDownLatch、Semaphore等4大并发工具类详解
之前谈过高并发编程系列:4种常用Java线程锁的特点,性能比较.使用场景 ,以及高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) 今天主要介绍concurre ...
- 【重难点】【JUC 02】volitale 常用模式 、JUC 下有哪些内容 、并发工具类
[重难点][JUC 02]volitale 常用模式 .JUC 下有哪些内容 .并发工具类 文章目录 [重难点][JUC 02]volitale 常用模式 .JUC 下有哪些内容 .并发工具类 一.v ...
- 【搞定Java并发编程】第24篇:Java中的并发工具类之CountDownLatch
上一篇:Java中的阻塞队列 BlockingQueue 详解 本文目录: 1.CountDownLatch的基本概述 2.CountDownLatch的使用案例 3.CountDownLatch的源 ...
- Java并发工具类(闭锁CountDownLatch)
并发工具类系列: Java并发工具类(闭锁CountDownLatch) Java并发工具类(栅栏CyclicBarrier) Java并发工具类(信号量Semaphore) 闭锁是一种同步工具类,可 ...
最新文章
- python3.5怎么使用-Python3.5中NumPy模块的使用图文教程
- 优化定制化abap代码必须遵守的经典黄金规则
- JZOJ 5691. 【GDOI2018Day2模拟4.25】求和
- java求期望_Java 11的期望
- 智能音箱音效哪个好_华为支浩:音质好是底线,AI基本功扎实让智能音箱不再是“玩具”...
- 阿里的事前验尸_(不太完全)100天的代码-验尸
- socket 请求Web服务器过程
- java什么是同步_什么是同步?什么是互斥?
- rest功能java,java – 功能翻转REST端点的注释
- 【分享】如果我没有那么优秀,我研究生阶段选择机器学习方向还有出路吗?...
- hadoop安装教程(一次填完所有的坑)
- 一键重装深度linux系统下载,一键安装操作系统下载win7
- 未来世界的幸存者-阮一峰
- 正运动技术CAD导图软件配合控制器的使用方法
- 程序 卡塔_卡塔斯码
- 笔记13-1(C语言 三子棋)
- snaker并行任务示例
- 编译make px4_fmu-v2_default upload时,报错ERROR Board can accept larger flash images (2080768 bytes)
- [静态时序分析简明教程(三)]备战秋招,如何看懂一个陌生的timing report
- 类别不均衡问题之loss大集合:focal loss, GHM loss, dice loss 等等