怎么使用CountDownLatch
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍"怎么使用CountDownLatch",在日常操作中,相信很多人在怎么使用CountDownLatch问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎
千家信息网最后更新 2025年02月23日怎么使用CountDownLatch
这篇文章主要介绍"怎么使用CountDownLatch",在日常操作中,相信很多人在怎么使用CountDownLatch问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么使用CountDownLatch"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
CountDownLatch是一个非常实用的多线程控制工具类。常用的就下面几个方法:
CountDownLatch(int count) //实例化一个倒计数器,count指定计数个数countDown() // 计数减一await() //等待,当计数减到0时,所有线程并行执行
CountDownLatch在我工作的多个场景被使用,算是用的很频繁的了,比如我司API接口要求响应时间在200ms以内,但是如果一个接口内部依赖多个三方/外部服务,那串行调用接口的RT必然很久,所以个人用的最多的是接口RT优化场景,内部服务并行调用。
对于倒计数器,一种典型的场景就是火箭发射。在火箭发射前,为了保证万无一失,往往还要进行各项设备、仪器的检测。只有等到所有的检查完毕后,引擎才能点火。那么在检测环节当然是多个检测项可以同时进行的。代码实现:
/** * @Author: 王琦1124602935@qq.com * @Date: 2019-5-4 0004 9:43 * @Description: 倒计时器示例:火箭发射 */public class CountDownLatchDemo implements Runnable{ static final CountDownLatch latch = new CountDownLatch(10); static final CountDownLatchDemo demo = new CountDownLatchDemo(); @Override public void run() { // 模拟检查任务 try { Thread.sleep(new Random().nextInt(10) * 1000); System.out.println("check complete"); //计数减一 latch.countDown(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) throws InterruptedException { ExecutorService exec = Executors.newFixedThreadPool(10); for (int i=0; i<10; i++){ exec.submit(demo); } // 等待检查 latch.await(); // 发射火箭 System.out.println("Fire!"); // 关闭线程池 exec.shutdown(); }}
上述代码中我们先生成了一个CountDownLatch实例。计数数量为10,这表示需要有10个线程来完成任务,等待在CountDownLatch上的线程才能继续执行。latch.countDown();方法作用是通知CountDownLatch有一个线程已经准备完毕,倒计数器可以减一了。latch.await()方法要求主线程等待所有10个检查任务全部准备好才一起并行执行。
到此,关于"怎么使用CountDownLatch"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
线程
接口
方法
火箭
发射
学习
检查
任务
场景
多个
计数器
检测
实用
代码
实例
更多
准备
帮助
服务
频繁
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器同步北京时间云空间
云服务器相关问题
服务器挤爆 如何
数据库中打开数据库的语句
大数据数据库sql
针对网络安全教育的指导思想
黄冈好的软件开发价格
软件开发初学者适合看啥书
湖南智能制造网络安全
华润三九软件开发
浟湙网络技术
天天p图软件开发历史
如何测试两台服务器是否连通
重庆移动服务器租用推荐云服务器
王牌战士怎么查看自己的服务器
数据库关系是一个集合
网络安全的威胁和防护方法
嵌入式操作系统软件开发
软件开发一般有多绩效奖金
互联网科技行业财务部角色
公安信息网络安全研究所
计算机网络技术贵州本科
jdbc实现数据库连接池
计算应用网络技术
潍坊党性体检软件开发系统
数据库驱动的设计模式
派森定制存储服务器怎么样
嵌入式操作系统软件开发
维护网络安全规范网络言行
u点家庭服务器管理系统