CountDownLatch笔记
2016-12-13 15:59
113 查看
CountDownLatch是java的concurrent包下的一个倒计时锁。
//=====================================================
通过代码来理解CountDownLatch的使用,当然了,在这里我只是单线程形式,一般情况下CountDownLatch都是使用在多线程模式下的。
//倒计时锁 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(); }..
相关文章推荐
- Thinking in Java学习笔记 CountDownLatch(CountDownLatchDemo.java)
- java之CountDownLatch看看笔记
- Java 并发编程实战学习笔记——CountDownLatch的使用
- Java笔记:CountDownLatch - 计数锁存器、Future、CyclicBarrier - 循环屏障 和 Semaphore - 信号量
- Java并发学习笔记(14) 闭锁(CountDownLatch)
- 浅析Java中CountDownLatch用法
- (12)java5的CountDownLatch、Exchanger同步工具
- CountDownLatch、CyclicBarrier
- java多线程组件一:CountDownLatch使用方法的总结
- java并发编程中CountDownLatch和CyclicBarrier的使用
- JDK5.0新特性系列---11.5.2线程 同步装置之CountDownLatch
- 浅谈Java中CountDownLatch的用法
- 浅析Java中CountDownLatch用法
- 同步器之CountDownLatch
- Android之CountDownLatch线程同步
- java多线程之CountDownLatch倒数闸门
- Java多线程之CountDownLatch
- 采用Thread.join()或CountDownLatch来实现线程间同步
- Synchronizer 闭锁(CountDownLatch,FutureTask ) 信号量(Semaphore) 关卡(CyclicBarrier) 知识点总结(java并发编程实践读书笔记三)
- CountDownLatch用法