Java多线程之concurrent包(六)——CountDownLatch
来源:互联网 发布:阿里云备案在哪 编辑:程序博客网 时间:2024/05/16 00:57
CountDownLatch是减计数方式,计数==0时释放所有等待的线程;
CountDownLatch当计数到0时,计数无法被重置;
CountDownLatch每次调用countDown()方法计数减一,调用await()方法只进行阻塞,对计数没任何影响;
示例代码:
public class TestCountDownLatch { private static final int N = 10; public static void main(String[] args) throws InterruptedException { CountDownLatch doneSignal = new CountDownLatch(N);//10计数器 CountDownLatch startSignal = new CountDownLatch(1);//1个计数器 for (int i = 1; i <= N; i++) { new Thread(new Worker(i, doneSignal, startSignal)).start(); } System.out.println("begin------------"); startSignal.countDown();//计数器-1 doneSignal.await();//等待 System.out.println("Ok"); } static class Worker implements Runnable { private final CountDownLatch doneSignal; private final CountDownLatch startSignal; private int beginIndex; Worker(int beginIndex, CountDownLatch doneSignal, CountDownLatch startSignal) { this.startSignal = startSignal; this.beginIndex = beginIndex; this.doneSignal = doneSignal; } @Override public void run() { try { startSignal.await(); beginIndex = (beginIndex - 1) * 10 + 1; for (int i = beginIndex; i < beginIndex + 10; i++) { System.out.println(i); } } catch (InterruptedException e) { e.printStackTrace(); } finally { doneSignal.countDown(); } } }}
运行结果如下:
begin------------111213141516171819201234567891021222324252627282930414231323334353637383940435152535455445671727374757677787991929394959697989910061626364656667686970454647484950818283848057585960858687888990Ok
0 0
- Java多线程之concurrent包(六)——CountDownLatch
- Java多线程之concurrent包(五)——CyclicBarrier
- Java并发包concurrent之CountDownLatch
- java-concurrent之CountDownLatch
- java-concurrent之CountDownLatch
- java.util.concurrent包图文源码解析(一)——CountDownLatch
- JAVA concurrent包学习--CountDownLatch
- Java多线程之concurrent包(一)——ReentrantLock与Condition
- Java多线程之concurrent包(二)——线程安全集合
- Java多线程之concurrent包(三)——Executor框架与线程池
- Java多线程之concurrent包(四)——Semaphore信号量
- java.util.concurrent之CountDownLatch
- JAVA多线程之——CountDownLatch
- Java多线程——java.util.concurrent库中的CyclicBarrier和CountDownLatch工具
- Java多线程工具包java.util.concurrent---CountDownLatch
- JAVA多线程之(CountDownLatch)
- java多线程concurrent包
- java.util.concurrent包(5)-CountDownLatch使用
- Ubuntu14.04.2取消自动屏锁
- android 模拟器 模拟home 键的快捷键
- Linux 查看系统硬件信息
- linux 如何配置ip地址
- GUI.BeginScrollView
- Java多线程之concurrent包(六)——CountDownLatch
- 微信与支付宝两个平台对接文档
- JQuery选择器
- 最大似然估计
- 算法导论--JAVA实现合并排序详解
- .Net 几种数据的解压缩
- jvm 常用配置
- Java基础知识点记录(主要记录一些不常见或者容易忘记的知识点,时刻更新)
- 源码编译安装screen