CountDownLatch

一个或多个线程等待其他线程完成操作后在在执行

CountDownLatch通过一个计数器来实现,await方法阻塞直到 countDown() 调用计数器归零之后释放所有等待的线程,并且任何后续的await调用立即返回。这是一次性现象 - 计数无法重置。如果您需要重置计数的版本,请考虑使用CyclicBarrier。

public class WorkerRunnable implements Runnable {

private CountDownLatch countDownLatch;

private int i;

public WorkerRunnable(CountDownLatch latch, int i) {

this.countDownLatch = latch;

this.i = i;

}

@Override

public void run() {

doWork();

this.countDownLatch.countDown();

}

private void doWork() {

System.out.println("当前的线程: " + i);

}

}

public class Client {

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

final int n = 10;

CountDownLatch doneSignal = new CountDownLatch(n);

ExecutorService executor = Executors.newFixedThreadPool(10);

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

executor.execute(new WorkerRunnable(doneSignal, i));

}

doneSignal.await();

System.out.println("结束");

}

}

out

当前的线程: 7

当前的线程: 6

当前的线程: 2

当前的线程: 1

当前的线程: 9

当前的线程: 0

当前的线程: 5

当前的线程: 4

当前的线程: 8

当前的线程: 3

结束

java cutdown_Java 多线程系列 CountDownLatch相关推荐

  1. Java多线程系列(九):CountDownLatch、Semaphore等4大并发工具类详解

    之前谈过高并发编程系列:4种常用Java线程锁的特点,性能比较.使用场景 ,以及高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) 今天主要介绍concurre ...

  2. java 秒杀多线程_秒杀多线程系列 - 随笔分类 - Joyfulmath - 博客园

    随笔分类 - 秒杀多线程系列 秒杀多线程系列,该系列转载至CSDN MoreWindows: http://blog.csdn.net/morewindows/article/details/7392 ...

  3. Java多线程系列---“JUC锁”01之 框架

    本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下: 01. Java多线程系列--"JUC锁"01之 框架 02. Java多线程系列--"JUC锁 ...

  4. Java多线程系列(六):深入详解Synchronized同步锁的底层实现

    谈到多线程就不得不谈到Synchronized,很多同学只会使用,缺不是很明白整个Synchronized的底层实现原理,这也是面试经常被问到的环节,比如: synchronized的底层实现原理 s ...

  5. Java多线程系列(四):4种常用Java线程锁的特点,性能比较、使用场景

    多线程的缘由 在出现了进程之后,操作系统的性能得到了大大的提升.虽然进程的出现解决了操作系统的并发问题,但是人们仍然不满足,人们逐渐对实时性有了要求. 使用多线程的理由之一是和进程相比,它是一种非常花 ...

  6. Java多线程系列(七):并发容器的原理,7大并发容器详解、及使用场景

    之前谈过高并发编程系列: 高并发编程系列:4种常用Java线程锁的特点,性能比较.使用场景 高并发编程系列:CountDownLatch.Semaphore等4大并发工具类详解 高并发编程系列:4大J ...

  7. Java多线程系列(一):最全面的Java多线程学习概述

    Java并发编程的技能基本涵括以下5方面: 多线程 线程池 线程锁 并发工具类 并发容器 多线程的4种创建方式 继承Thread 实现Runnable接口 实现Callable接口 以及线程池来创建线 ...

  8. Java多线程系列(二):线程的五大状态,以及线程之间的通信与协作

    在Java面试的时候,经常会问到Java并发编程相关的多线程.线程池.线程锁.线程通信等面试必考点,比如: Java并发编程系列:Java线程池的使用方式,核心运行原理.以及注意事项 Java并发编程 ...

  9. Java多线程系列(三):Java线程池的使用方式,及核心运行原理

    之前谈过多线程相关的4种常用Java线程锁的特点,性能比较.使用场景,今天主要分享线程池相关的内容,这些都是属于Java面试的必考点. 为什么需要线程池 java中为了提高并发度,可以使用多线程共同执 ...

最新文章

  1. 硬肝!超详细matplotlib基础介绍!!!
  2. A novel evolutionary model for constructing gene coexpression networks with comprehensive features
  3. 资源在另一个编辑器中打开的错误处理办法
  4. 好奇,我们常用的 Integer 内部为什么会去实现 Comparable 接口,他的作用是什么?...
  5. 中国湿敏元器件市场研发方向预测与前景趋势研究报告2022版
  6. 全球及中国消费电子环境光传感器 (ALS)行业运行现状与十四五应用建设报告2022版
  7. STL中的set/map
  8. 大图社区搜索的调查综述(二)——预备知识
  9. HDU1029——Ignatius and the Princess IV
  10. sublime text3 智能提示和自动补全
  11. ma2灯光控制台 linux,MA2灯光控制台简易教程.pdf
  12. 摄像头防水性能测试软件,手机摄像头防水测试/气密性检测方法分享
  13. 计算机公式固定数值符号,【2人回答】Excel如何锁定,如何Excel某计算公式中锁定其中一个数值?-3D溜溜网...
  14. 799 - 背包问题VIII - LintCode
  15. 一张图看懂MTK 芯片命名规则
  16. Chrome 插件推荐
  17. EXCEL应用:数据可视化终极教程
  18. LPC1768 IAP写入bin格式程序不能启动的解决办法
  19. 最全的Java版本历史
  20. 【Jquery】Pjax的了解与应用

热门文章

  1. SQL语句与权限管理
  2. 从贝叶斯理论到图像马尔科夫随机场
  3. 微信公众号(四)——上传永久素材(图片)
  4. 用SPSS 画 人口金字塔(限SPSS 13.0以上)
  5. D. Ceil Divisions
  6. zookeeper快速入门——应用(两种分布式锁)
  7. Gavin老师Transformer直播课感悟 - 基于Retrieval的具有Fine-grained架构的对话系统(二)
  8. vc++ 自定义消息和WM_NOTIFY消息实现
  9. visual studio 2015 profession 解决智能提醒默认不选中的问题
  10. linux中的硬件抽象层