今天讲一个倒计时器工具,叫CountDownLatch。需要这个工具的场景大概有:当所有的小任务都完成之后,再启动大任务。

先看代码:

public class CountDownLatchDemo {

static final CountDownLatch LATCH = new CountDownLatch(10);

public static class Task implements Runnable {

final static AtomicInteger incr = new AtomicInteger();

@Override

public void run() {

try {

Thread.sleep(new Random().nextInt(10)*100);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("火箭检测任务-" + incr.getAndIncrement() + " 完成");

LATCH.countDown();

}

}

public static void main(String[] args) throws InterruptedException {

ExecutorService executorService = Executors.newFixedThreadPool(10);

for (int i = 0; i < 10; i++) {

executorService.execute(new Task());

}

LATCH.await();

System.out.println("发射火箭");

executorService.shutdown();

}

}

这里模拟了火箭发射的场景,所有预备任务完成,才能发射火箭。

CountDownLatch比较简单,一个构造加上两个主要方法:

构造函数需要入参一个总数,表示有几个小任务需要执行

countDown() 每次执行完小任务都要调用这个方法,用来倒计时

await() 没有倒计时到0,就会一直阻塞。当倒计时完成,则继续执行后续代码

转载至链接:https://my.oschina.net/lizaizhong/blog/1833536

java倒计时器_Java并发系列5--倒计时器CountDownLatch相关推荐

  1. java lock 对象_Java并发编程锁系列之ReentrantLock对象总结

    Java并发编程锁系列之ReentrantLock对象总结 在Java并发编程中,根据不同维度来区分锁的话,锁可以分为十五种.ReentranckLock就是其中的多个分类. 本文主要内容:重入锁理解 ...

  2. java aqs源码_Java并发系列-AQS源码学习

    AQS框架学习 Node节点 状态表示 cancelled:表明当前线程已经放弃锁 signal:表明当前线程正在运行,它后面的线程等着被它唤醒 condition:表明当前线程正在有条件的等待 pr ...

  3. java 读取内存地址结构体_Java并发系列之volatile

    讲到Java并发,多线程编程,一定避免不了对关键字volatile的了解,那么如何来认识volatile,从哪些方面来了解它会比较合适呢?个人认为,既然是多线程编程,那我们在平常的学习中,工作中,大部 ...

  4. java semaphore 等待_Java并发编程系列之Semaphore详解

    简单介绍 我们以饭店为例,假设饭店只有三个座位,一开始三个座位都是空的.这时如果同时来了三个客人,服务员人允许他们进去用餐,然后对外说暂无座位.后来的客人必须在门口等待,直到有客人离开.这时,如果有一 ...

  5. java 九九乘法表倒叙_java九九乘法表倒三角输出

    package test; public class Find { public static void main(String args[]){ int count=0; int k = 0; in ...

  6. java 同步包_Java并发程序设计(四)JDK并发包之同步控制

    JDK并发包之同步控制 一.重入锁 重入锁使用java.util.concurrent.locks.ReentrantLock来实现.示例代码如下: public class TryReentrant ...

  7. java cas机制_java并发编程中的CAS机制,你理解嘛?

    学习Java并发编程,CAS机制都是一个不得不掌握的知识点.这篇文章主要是从出现的原因再到原理进行一个解析.希望对你有所帮助. 一.为什么需要CAS机制? 为什么需要CAS机制呢?我们先从一个错误现象 ...

  8. java投票锁_Java并发编程锁之独占公平锁与非公平锁比较

    Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家去排队本着先来 ...

  9. java volatile 原子性_Java并发编程之验证volatile不能保证原子性

    Java并发编程之验证volatile不能保证原子性 通过系列文章的学习,凯哥已经介绍了volatile的三大特性.1:保证可见性 2:不保证原子性 3:保证顺序.那么怎么来验证可见性呢?本文凯哥(凯 ...

  10. java代码讲解_Java基础系列-代码块详解

    注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 前言 Java基础系列,尽量采用通俗易懂.循序渐进的方式,让大家真正理解Java基础知识! 代码块 ...

最新文章

  1. EXT3与EXT4的主要区别
  2. python语言怎么学-你们都是怎么学 Python 的?
  3. oracle 12c创建可插拔数据库(PDB)与用户详解
  4. 面试的时候的要注意的case应该怎么分析
  5. win7任务栏计算机图标,Win7系统任务栏怎么添加显示桌面图标 显示桌面图标如何放到win7任务栏...
  6. python与shell的3种交互方式介绍
  7. #詹青云 为什么我要在最好的年纪离开你
  8. java中删除最大的数,【Java练习】删除字符串中字符个数最少的字符
  9. threading.Event
  10. 中职计算机多媒体教材,中职汽车维修课中计算机多媒体教学的实施
  11. 免费的录屏软件Capture
  12. 附件二:攻防演练保密协议.docx
  13. hive中 <> 和 != 的区别
  14. 微信开发平台应用签名修改多久之后才可以使用
  15. 前端基础(二)----- CSS初识
  16. 今天项目报错: No operations allowed after connection closed
  17. [转载]Matlab反三角函数表示
  18. html前端开发------表格table
  19. C++常用术语及其英文翻译的含义和简单用途总结(六)
  20. 计算机怎么看硬盘内c,有问有答:怎么判断电脑里面的是不是固态硬盘?

热门文章

  1. 文学类的论文真的不需要数据么?
  2. 如何调用Sphinx 和api接口
  3. 关于阿里直播 安卓手机支付宝不支持的处理
  4. 人类的历史就是一部创业史
  5. ansible 变量
  6. DRAM Timing
  7. 测量平差中必要观测数的确定
  8. 麻省理工公开课:线性代数视频总结(课1-2)
  9. Skyscrapers (hard version)(1900/单调栈)
  10. linux的pending状态怎么退出,状态pending是什么意思