java倒计时器_Java并发系列5--倒计时器CountDownLatch
今天讲一个倒计时器工具,叫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相关推荐
- java lock 对象_Java并发编程锁系列之ReentrantLock对象总结
Java并发编程锁系列之ReentrantLock对象总结 在Java并发编程中,根据不同维度来区分锁的话,锁可以分为十五种.ReentranckLock就是其中的多个分类. 本文主要内容:重入锁理解 ...
- java aqs源码_Java并发系列-AQS源码学习
AQS框架学习 Node节点 状态表示 cancelled:表明当前线程已经放弃锁 signal:表明当前线程正在运行,它后面的线程等着被它唤醒 condition:表明当前线程正在有条件的等待 pr ...
- java 读取内存地址结构体_Java并发系列之volatile
讲到Java并发,多线程编程,一定避免不了对关键字volatile的了解,那么如何来认识volatile,从哪些方面来了解它会比较合适呢?个人认为,既然是多线程编程,那我们在平常的学习中,工作中,大部 ...
- java semaphore 等待_Java并发编程系列之Semaphore详解
简单介绍 我们以饭店为例,假设饭店只有三个座位,一开始三个座位都是空的.这时如果同时来了三个客人,服务员人允许他们进去用餐,然后对外说暂无座位.后来的客人必须在门口等待,直到有客人离开.这时,如果有一 ...
- java 九九乘法表倒叙_java九九乘法表倒三角输出
package test; public class Find { public static void main(String args[]){ int count=0; int k = 0; in ...
- java 同步包_Java并发程序设计(四)JDK并发包之同步控制
JDK并发包之同步控制 一.重入锁 重入锁使用java.util.concurrent.locks.ReentrantLock来实现.示例代码如下: public class TryReentrant ...
- java cas机制_java并发编程中的CAS机制,你理解嘛?
学习Java并发编程,CAS机制都是一个不得不掌握的知识点.这篇文章主要是从出现的原因再到原理进行一个解析.希望对你有所帮助. 一.为什么需要CAS机制? 为什么需要CAS机制呢?我们先从一个错误现象 ...
- java投票锁_Java并发编程锁之独占公平锁与非公平锁比较
Java并发编程锁之独占公平锁与非公平锁比较 公平锁和非公平锁理解: 在上一篇文章中,我们知道了非公平锁.其实Java中还存在着公平锁呢.公平二字怎么理解呢?和我们现实理解是一样的.大家去排队本着先来 ...
- java volatile 原子性_Java并发编程之验证volatile不能保证原子性
Java并发编程之验证volatile不能保证原子性 通过系列文章的学习,凯哥已经介绍了volatile的三大特性.1:保证可见性 2:不保证原子性 3:保证顺序.那么怎么来验证可见性呢?本文凯哥(凯 ...
- java代码讲解_Java基础系列-代码块详解
注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 前言 Java基础系列,尽量采用通俗易懂.循序渐进的方式,让大家真正理解Java基础知识! 代码块 ...
最新文章
- EXT3与EXT4的主要区别
- python语言怎么学-你们都是怎么学 Python 的?
- oracle 12c创建可插拔数据库(PDB)与用户详解
- 面试的时候的要注意的case应该怎么分析
- win7任务栏计算机图标,Win7系统任务栏怎么添加显示桌面图标 显示桌面图标如何放到win7任务栏...
- python与shell的3种交互方式介绍
- #詹青云 为什么我要在最好的年纪离开你
- java中删除最大的数,【Java练习】删除字符串中字符个数最少的字符
- threading.Event
- 中职计算机多媒体教材,中职汽车维修课中计算机多媒体教学的实施
- 免费的录屏软件Capture
- 附件二:攻防演练保密协议.docx
- hive中 <> 和 != 的区别
- 微信开发平台应用签名修改多久之后才可以使用
- 前端基础(二)----- CSS初识
- 今天项目报错: No operations allowed after connection closed
- [转载]Matlab反三角函数表示
- html前端开发------表格table
- C++常用术语及其英文翻译的含义和简单用途总结(六)
- 计算机怎么看硬盘内c,有问有答:怎么判断电脑里面的是不是固态硬盘?