CountDownLatch笔记
来源:互联网 发布:视频文件旋转角度软件 编辑:程序博客网 时间:2024/06/05 16:48
CountDownLatch是java的concurrent包下的一个倒计时锁。
//倒计时锁public class CountDownLatch { //锁 private final Sync sync; //构造函数 //count:表示必须调用count次countDown()方法,await()方法才不会阻塞 //或者我们可以说倒计时数是count //当然了,倒计时数必须是非负数 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync = new Sync(count); } //该方法使得当前线程一直阻塞,直到倒计时数是0,或者当前线程被其他线程中断而抛出InterruptedException异常 public void await() throws InterruptedException { sync.acquireSharedInterruptibly(1); } //该方法有3种结果 //1.倒计时数是0,或者在达到超时timeout之前,倒计时数变为0,则返回true //2.在达到超时timeout后,倒计时数还未变为0,则返回false //3.当前线程被中断而该方法会抛出InterruptedException异常 public boolean await(long timeout, TimeUnit unit) throws InterruptedException { return sync.tryAcquireSharedNanos(1, unit.toNanos(timeout)); } //1.倒计时数大于0,则倒计时数会递减1 //2.倒计时数等于0,则倒计时数不递减 public void countDown() { sync.releaseShared(1); }}
//=====================================================
通过代码来理解CountDownLatch的使用,当然了,在这里我只是单线程形式,一般情况下CountDownLatch都是使用在多线程模式下的。
java.util.concurrent.CountDownLatch latch = new java.util.concurrent.CountDownLatch(2); try { System.out.println("1"); boolean rs = latch.await(1L, TimeUnit.SECONDS);//1秒之后,await方法返回false,程序往下运行 System.out.println("2,rs:" + rs); latch.countDown(); System.out.println("4"); latch.countDown(); latch.await();//必须调用了2次countDown()方法,计时数才变为0,await()方法不会阻塞 System.out.println("3"); } catch (InterruptedException e) { e.printStackTrace(); }..
0 0
- CountDownLatch笔记
- CountDownLatch小笔记
- CountDownLatch学习笔记
- CountDownLatch学习笔记
- CountDownLatch
- CountDownLatch
- CountDownLatch
- Countdownlatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- C# 16进制转换为Base64字符串
- CS与BS区别
- java正则该如何表达
- python 3 连接mysql方法
- php打印杨辉三角、金字塔、九九乘法表
- CountDownLatch笔记
- JSP学习之再谈计算器
- 创建mavenweb项目
- eclipse 中添加@author @version等文档注释快捷键
- EntityManager 使用
- JMeter自动化接口测试思路
- Android基础信息记录
- Centos7安装cairo-dock
- android动画_帧动画