CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

主要方法

public CountDownLatch(int count);构造方法参数指定了计数的次数

public void countDown(); countDown方法,当前线程调用此方法,则计数减一

public void await() awaint方法,调用此方法会一直阻塞当前线程,直到计时器的值为0

===========================================================================================================

  public class CountDownLatchDemo {  final static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  public static void main(String[] args) throws InterruptedException {  CountDownLatch latch=new CountDownLatch(2);//两个工人的协作  Worker worker1=new Worker("zhang san", 5000, latch);  Worker worker2=new Worker("li si", 8000, latch);  worker1.start();//  worker2.start();//  latch.await();//等待所有工人完成工作  System.out.println("all work done at "+sdf.format(new Date()));  }  static class Worker extends Thread{  String workerName;   int workTime;  CountDownLatch latch;  public Worker(String workerName ,int workTime ,CountDownLatch latch){  this.workerName=workerName;  this.workTime=workTime;  this.latch=latch;  }  public void run(){  System.out.println("Worker "+workerName+" do work begin at "+sdf.format(new Date()));  doWork();//工作了  System.out.println("Worker "+workerName+" do work complete at "+sdf.format(new Date()));  latch.countDown();//工人完成工作,计数器减一  }  private void doWork(){  try {  Thread.sleep(workTime);  } catch (InterruptedException e) {  e.printStackTrace();  }  }  }  }

转载于:https://www.cnblogs.com/swbzmx/p/5991773.html

Java多线程协作CountDownLatch,主线程等待子线程结束相关推荐

  1. Java多线程之----主线程会等待子线程结束再结束么,怎么让主线程等待子线程结束呐?

    首先给出结论: 主线程和子线程之间没有谁先谁后结束这种关联,它们只是各自负责自己的线程任务,如果该线程的任务结束了,该线程自然会结束运行. talk is cheap,show me the code ...

  2. c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划

    作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...

  3. 【多线程】学习记录七种主线程等待子线程结束之后在执行的方法

    最近遇到一个问题需要主线程等待所有的子线程结束,才能开始执行,统计所有的子线程执行结果,返回,网上翻阅各种资料,最后记录一下,找到七种方案 第一种:while循环 对于"等待所有的子线程结束 ...

  4. 【Java并发编程】主线程等待子线程的多种方法

    文章目录 1.Thread sleep() 2.Thread join() 3.synchronized 等待唤醒机制 4.ExecutorService isTerminated() + while ...

  5. VC++ 中主线程等待子线程结束的方法

    void WaitForThreadExit(void) {DWORD dwRet; //返回值MSG msg; int wait_count=4; //线程句柄有4个int nExitThreadC ...

  6. java 主线程等待_Java实现主线程等待子线程

    本文介绍两种主线程等待子线程的实现方式,以5个子线程来说明: 1.使用Thread的join()方法,join()方法会阻塞主线程继续向下执行. 2.使用Java.util.concurrent中的C ...

  7. 如何实现java主线程等待子线程执行完毕之后再执行?

    本文转自:问题:如何实现java主线程等待子线程执行完毕之后再执行? - jseven - 博客园 点击关注强哥,查看更多精彩文章呀 工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完 ...

  8. Java并发编程原理与实战六:主线程等待子线程解决方案

    Java并发编程原理与实战六:主线程等待子线程解决方案 参考文章: (1)Java并发编程原理与实战六:主线程等待子线程解决方案 (2)https://www.cnblogs.com/pony1223 ...

  9. Java主线程等待子线程、线程池

    public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...

最新文章

  1. vant UI库组件, 与HTML 标签冲突
  2. 全国首个海底数据中心落地三亚,拉开海洋新基建赋能低碳算力序幕
  3. python中tell_Python的File tell()方法使用方法及作用解析(实例)
  4. leetcode 438. Find All Anagrams in a String | 438. 找到字符串中所有字母异位词(Java)
  5. 最优化课程(part1)
  6. tensorflow之tfrecord
  7. 《Windows 8 权威指南》——2.10 几招解决Windows 8 Metro应用打不开的问题
  8. listview优化方案
  9. 去掉GaussView 3.07启动警告窗口的完整解决方案
  10. CAJ 文件转换为 PDF 文件
  11. 二维码名片的生成与读取
  12. 使用 vue-waterfall2插件 vue 瀑布流
  13. 2022茶艺师(初级)考试试题模拟考试平台操作
  14. allegro 封装shape焊盘问题 Unable to load shape symbol
  15. 综述:基于影像基因组学的肺癌诊断治疗方法研究
  16. Windows让Tomcat以Apr的方式运行
  17. SQL Server 导入.mdf和.ldf文件
  18. 二叉树的遍历 详解及实现
  19. JAVA基础(七)JAVA面向对象
  20. 拼多多贴钱卖车,揭示汽车经销商现状

热门文章

  1. java.lang.NoSuchMethodError: javax.persistence.One
  2. need study
  3. C6000系列DSP的内联函数
  4. numpy shape函数
  5. 第二章kNN分类算法sorted函数
  6. python迭代器高级例子
  7. Qt creator使用笔记
  8. 搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务
  9. 第十六 django进一步了解
  10. 国内知名 IT 公司前端团队