Java 同步工具类CountDownLatch相当于一个计数器,假设一个方法,等待一个计数器从初始值5变为0,每使用一次countdown()方法,计数器的值减少1,当计数器的值为0时,触发某件事。

使用很简单:

public class LatchTest {// 计数器设置为5private static CountDownLatch latch = new CountDownLatch(5);public void m() {try {Thread.sleep(2000L);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName()+" m()");// 线程结束时,计数器减少1latch.countDown();}public static void main(String[] args) {LatchTest test = new LatchTest();for (int i=0; i<5; i++) {new Thread(()->test.m()).start();}// 等待计数器变为0try {latch.await();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("let's call main method");}
}

Java 并发编程之同步工具类闭锁 CountDownLatch相关推荐

  1. Java 并发编程之同步工具类 Exchanger

    Exchanger 交换器,用于两个线程之间交换数据. 线程1调用exchange()方法,然后进行线程阻塞,等待线程2调用exchange()方法交换数据,线程2调用exchange()方法后,两个 ...

  2. Java 并发编程之同步工具类栅栏 CyclicBarrier

    CyclicBarrier 用来阻塞一组线程,等待线程完成后才开始某件事情. 例如,开启5个线程,每个线程使用await方法开始阻塞,等待5个线程都完成,才开始执行await方法后面的代码. publ ...

  3. Java 并发编程之同步工具类信号量 Semaphore

    Semaphore 可以理解为一个阈值,正在进行的操作数量不能超过此阈值,可以用来限制资源的访问,或者控制某个队列中对象的个数,也就是控制同时执行的线程的数量. 主要有acquire,release两 ...

  4. Java并发中常用同步工具类

    为什么80%的码农都做不了架构师?>>>    同步工具类可以是任何一个对象,只要它根据其自身的状态来协调线程控制流.阻塞队列(BlockingQueue)可以作为同步工具类,其他类 ...

  5. Java高并发编程:同步工具类

    内容摘要 这里主要介绍了java5中线程锁技术以外的其他同步工具,首先介绍Semaphore:一个计数信号量.用于控制同时访问资源的线程个数,CyclicBarrier同步辅助类:从字面意思看是路障, ...

  6. java并发编程学习juc工具类之Executors

    文章目录 Executors 重要方法 1.newCachedThreadPool 2.newFixedThreadPool 3.newScheduledThreadPool 示例代码 4.newSi ...

  7. java并发基础(二)--- Java监视器模型、并发容器、同步工具类(闭锁、信号量)

    原blog链接:http://www.cnblogs.com/peterxiao/p/6921903.html 总结一下第4.5章的东西. 一.java监视器模式 概念:把对象的所有可变状态都封装起来 ...

  8. 漫画编程java_【漫画】JAVA并发编程之并发模拟工具

    上一节[漫画]JAVA并发编程三大Bug源头(可见性.原子性.有序性)我们聊了聊并发编程的三个bug源头,这还没开始进入并发世界,胖滚猪就遇到了难题.. 这个难题是所有初学者都会有的疑惑:没法复现那些 ...

  9. Java并发编程:同步容器

    为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器.并发容器.阻塞队列.Synchronizer(比如CountDownLatch).今天我们就来讨论下同步容器. ...

最新文章

  1. Visual与IMU多传感器融合的定位方案
  2. **PHP SimpleXML 使用详细例子
  3. SQL SERVER全面优化-------写出好语句是习惯
  4. node.js 爬虫中文乱码 处理
  5. springboot pom 依赖
  6. python编程选股_用Python选一个自己的股票池2
  7. 【题解】生日蛋糕-C++
  8. 使用用WCF中的双工(Duplex)模式将广告图片推送到每个Winform客户端机子上
  9. 与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。
  10. 4.程序员的自我修养---静态链接
  11. Java:接口文档示例
  12. 第二章 指令:计算机的语言
  13. 关于华硕电脑进入bios
  14. 人人商城系统安装服务器上,微擎及人人商城安装
  15. PS怎么做抽象流彩油画丙烯画效果
  16. [解疑][VS]Visual Studio软件编程时,ID号的格式ID_,IDS_,IDC_,IDI_,IDB_,IDD_之间有什么区别?
  17. 【算法分析】实验 1. 基于贪心的会议安排问题
  18. 酷我音乐linux版本,酷我音乐盒的 Gtk/Linux 实现 – v2.5 版本发布
  19. DCDC基础(8)-- 同步BUCK芯片的电性能参数解读二
  20. 湖南大学 实验八 青蛙与蚊子

热门文章

  1. 【Linux使用】Centos 7设置时区与时钟(chrony / ntp /systemd)
  2. 计算机网络学习笔记:第三章
  3. textaligncenter仍然不居中_三星Galaxy S21/S21+保护膜曝光:居中挖孔 回归直屏_手机行情...
  4. MFC中将窗口最小化到系统托盘和还原
  5. ajax请求使用utf-8,Ajax,请求标头UTF-8到ISO字符集[重复]
  6. python 爬虫库比较_公认8个效率最高的爬虫框架
  7. python库怎么绘画_[雪峰磁针石博客]python绘图作业:使用pygame库画房子
  8. Unreal、CryEngine、Gamebryo引擎介绍
  9. Salt-Syndic
  10. centos 6.5 rsync+inotify 实时同步