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. 《剑指Offer》题目:树的子结构
  2. openssl实现CA自签证书和颁发数字证书
  3. [原创] hadoop学习笔记:wordcout程序实践
  4. php+ tinymce粘贴word
  5. CF思维联系– Codeforces-989C C. A Mist of Florescence
  6. 20道做完信心嫉妒膨胀的前端测试题
  7. unity打开excel表格_Excel电子表格需要双击两次才能打开问题的解决方案
  8. python火柴人打架代码_两个火柴人对打动画 如何制作两个火柴人打架的动画效果?...
  9. php函数体用return,php递归函数使用return问题
  10. 【业务实战】批量生成二维码并打成压缩包
  11. flash乱码解决方案
  12. 【Transformer论文模型细致讲解】
  13. 【愚公系列】2023年06月 网络安全(交通银行杯)-疑惑的汉字
  14. 京东金融APP被曝侵犯隐私
  15. 简单聊聊 Ironic 是如何管理裸金属的
  16. 问题-fuxi job failed ,cased by:Invalid decimal format.
  17. Java NIO编程
  18. python中info的用法_使用Python中的data.info()显示所有信息
  19. java计算机毕业设计房产客户信息管理系统源码+系统+lw文档+mysql数据库+部署
  20. brew update 更新太慢

热门文章

  1. 爬取贝壳平台新房数据并可视化
  2. Mysql 数据同步到 Elasticsearch
  3. 十条常见的互联网盈利模式
  4. SAP AC305固定资产培训书面总结-转
  5. 学习笔记(05):人工智能-必备数学基础视频教程-奇异值的分解
  6. 【钓鱼邮件!】一枚合格的鱼饵是什么味道【下】钓鱼文案以及钓鱼迹象
  7. [noi-2291]快速幂运算
  8. python文本框随窗体变化_Javascript 文本框textarea高度随内容自适应增长收缩
  9. linux驱动编写--2--应用程序控制led闪烁
  10. ei指什么_EI是什么意思