转载自 非常有用的并发控制-倒计时器CountDownLatch

CountDownLatch见名思义,即倒计时器,是多线程并发控制中非常有用的工具类,它可以控制线程等待,直到倒计时器归0再继续执行。

给你出个题,控制5个线程执行完后主线徎再往下执行,并统计5个线程的所耗时间。当然我们可以通过join的形式完成这道题,但如果我说统计100个1000个线程呢?难道要写1000个join等待吗?这显然是不现实的。

废话少说,我们来做一个例子看看上面的题怎么实现,并理解倒计时器。

首先通过new CountDownLatch(5)约定了倒计时器的数量,在这里也是线程的数量,每个线程执行完后再对倒计时器-1。countDown()方法即是对倒计时器-1,这个方法需要放在finally中,一定要保证在每个线程中得到释放,不然子线程如果因为某种原因报错倒计时器永远不会清0,则会导报主线程会一直等待。

await()方法即是主线程阻塞等待倒计器归0后再继续往下执行,当然await可以带时间进去,等待多久时间后不管倒计时器有没有归0主线程继续往下执行。

如上面的例子所示,我们输出了倒计时器最后的数字0,表示倒计时器归0了,也输出了从开始到结束所花费的时间。从这个例子可以完全理解倒计时器的含义,这个工具类在实际开发经常有用到,也很好用。

CountDownLatch见名思义,即倒计时器,是多线程并发控制中非常有用的工具类,它可以控制线程等待,直到倒计时器归0再继续执行。

给你出个题,控制5个线程执行完后主线徎再往下执行,并统计5个线程的所耗时间。当然我们可以通过join的形式完成这道题,但如果我说统计100个1000个线程呢?难道要写1000个join等待吗?这显然是不现实的。

废话少说,我们来做一个例子看看上面的题怎么实现,并理解倒计时器。

首先通过new CountDownLatch(5)约定了倒计时器的数量,在这里也是线程的数量,每个线程执行完后再对倒计时器-1。countDown()方法即是对倒计时器-1,这个方法需要放在finally中,一定要保证在每个线程中得到释放,不然子线程如果因为某种原因报错倒计时器永远不会清0,则会导报主线程会一直等待。

await()方法即是主线程阻塞等待倒计器归0后再继续往下执行,当然await可以带时间进去,等待多久时间后不管倒计时器有没有归0主线程继续往下执行。

如上面的例子所示,我们输出了倒计时器最后的数字0,表示倒计时器归0了,也输出了从开始到结束所花费的时间。从这个例子可以完全理解倒计时器的含义,这个工具类在实际开发经常有用到,也很好用。

非常有用的并发控制-倒计时器CountDownLatc相关推荐

  1. 非常有用的并发控制-循环栅栏CyclicBarrier

    转载自 非常有用的并发控制-循环栅栏CyclicBarrier 昨天我讲了倒计时器CountDownLatch的应用,它是阻塞线程直到计时器归0的一种等待方式.今天讲的这个循环栅栏CyclicBarr ...

  2. Java并发编程系列学习_CountDownLatch倒计时器CyclicBarrier循环栅栏

    一.倒计时器CountDownLatch 在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种的业务场景下,通常可以使用Thread类的join方 ...

  3. android如何暂停倒计时,在Android中暂停和恢复倒计时器和进度条?

    我正在制作一个简单的应用程序,它使用倒计时器,循环进度条和3个按钮启动,暂停和恢复 . 我想要做的是当特定活动开始时我按暂停它存储定时器的时间暂停并从那一点开始恢复 . 但问题是倒计时器没有停止,所以 ...

  4. Android课程设计倒计时app,单片机课程设计-可调倒计时器.doc

    PAGE PAGE 2 课 程 设 计 设计名称 单片机可调倒计时器 全套设计加扣?3012250582 学年学期 2013 -2014学年第 二 学期 课程名称 单片机原理及应用 专业年级 电气11 ...

  5. python 倒计时_Excel制作竞答倒计时器

    微信号: Excel-Python 微信名: 实用办公编程技能 前几天,单位搞年庆,中间有一个环节是有奖竞答,当时会务组长让我来负责控制竞答计时,当时我就自己用Excel做了一个竞答倒计时器. 那么, ...

  6. js倒计时天时分秒php,JS制作分秒倒计时器

    这篇文章主要介绍了JavaScript分秒倒计时器实现方法,可实现按照毫秒倒计时的效果,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了JavaScript分秒倒计时器实现方法.分享给大家供 ...

  7. Android:一个线程玩转商品列表所有item的倒计时器,并对Adapter进行单控件刷新优化...

    所以这次我还是会跟大家讲一下关于商城的一个需求------商品的倒计时器. 或者有人会说,商品的一个倒计时很简单,但是我这次的需求是一个商品列表,每个商品都需要有一个自己的计时器.首先我们看看需求效果 ...

  8. 单片机float数发给上位机_上位机倒计时器

    1. 设置窗口 在VS2019新建一个Windows窗体应用(.NET Framework)项目,新建之后出现一个可视化页面(From1.cs[设计])设置窗口. 在左侧的工具箱里面拉拽控件到操作面板 ...

  9. 使用js在桌面上写一个倒计时器_论一个倒计时器的性能优化之路

    原文发表于 2018.05.25,搬运自个人博客. 引子 回顾这半年,扛需求能力越来越强,业务代码也是越写越多.但稍一认真看看这些当时为了满足快速上线所码的东西,问题其实还是不少.这次就从一个简单的计 ...

最新文章

  1. hdu6438 Buy and Resell 买卖物品 ccpc网络赛 贪心
  2. js 异步操作打开新页面被浏览器拦截的问题
  3. 19年三本毕业,做了三年的嵌入式软件。
  4. [蓝桥杯][算法训练VIP]黑白无常(dfs)
  5. vi/vim 编辑器详解
  6. php终止脚本执行(exit、die、return)
  7. 梨花带雨播放器程序开源版本
  8. 神级代码编辑软件(Sublime Text 3) v3.3114 汉化特别版
  9. c++ 删除文件_win7 系统电脑C盘哪些文件可以删除掉?
  10. mysql sqlite 分页查询_sqlite分页查询
  11. TypeScript 3.7 发布,带来 Optional Chaining 等特性
  12. vue调用函数怎么传参_Vue(非)父子组件的传值以及方法调用
  13. java技术分享ppt_精美PPT制作培训 | 技术二部内部分享
  14. 功能测试怎么做?常用功能测试方法总结
  15. 电池SOC仿真系列-基于Simscape搭建的锂电池模型
  16. FastReport.Net报表工具 vs RDL标准报表定义语言
  17. 2层,3层,4层交换机的区别与特点
  18. [leetcode] 179 Largest Number
  19. 斐波那契数列的四种实现方式(C语言)
  20. to_date的用法

热门文章

  1. 高等数学下-赵立军-北京大学出版社-题解-练习9.4
  2. 2.5w字长文爆肝 C++动态内存与智能指针一篇搞懂!太顶了!!!
  3. 算法-排序-插入排序
  4. srs10流程图_高效的SRS资源指示方法与流程
  5. word List 07
  6. mysql_result函数用不了_mysql_result()函数怎么在PHP中使用
  7. 将有序数组转换为二叉搜索树
  8. CF 1475 F . Unusual Matrix 思维
  9. 【牛客NOIP模拟】牛半仙的妹子序列【DP】【Segment Tree Beats】
  10. 双指针--Codeforces Round #645 (Div. 2) d题