Java多线程协作CountDownLatch,主线程等待子线程结束
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,主线程等待子线程结束相关推荐
- Java多线程之----主线程会等待子线程结束再结束么,怎么让主线程等待子线程结束呐?
首先给出结论: 主线程和子线程之间没有谁先谁后结束这种关联,它们只是各自负责自己的线程任务,如果该线程的任务结束了,该线程自然会结束运行. talk is cheap,show me the code ...
- c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划
作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...
- 【多线程】学习记录七种主线程等待子线程结束之后在执行的方法
最近遇到一个问题需要主线程等待所有的子线程结束,才能开始执行,统计所有的子线程执行结果,返回,网上翻阅各种资料,最后记录一下,找到七种方案 第一种:while循环 对于"等待所有的子线程结束 ...
- 【Java并发编程】主线程等待子线程的多种方法
文章目录 1.Thread sleep() 2.Thread join() 3.synchronized 等待唤醒机制 4.ExecutorService isTerminated() + while ...
- VC++ 中主线程等待子线程结束的方法
void WaitForThreadExit(void) {DWORD dwRet; //返回值MSG msg; int wait_count=4; //线程句柄有4个int nExitThreadC ...
- java 主线程等待_Java实现主线程等待子线程
本文介绍两种主线程等待子线程的实现方式,以5个子线程来说明: 1.使用Thread的join()方法,join()方法会阻塞主线程继续向下执行. 2.使用Java.util.concurrent中的C ...
- 如何实现java主线程等待子线程执行完毕之后再执行?
本文转自:问题:如何实现java主线程等待子线程执行完毕之后再执行? - jseven - 博客园 点击关注强哥,查看更多精彩文章呀 工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完 ...
- Java并发编程原理与实战六:主线程等待子线程解决方案
Java并发编程原理与实战六:主线程等待子线程解决方案 参考文章: (1)Java并发编程原理与实战六:主线程等待子线程解决方案 (2)https://www.cnblogs.com/pony1223 ...
- Java主线程等待子线程、线程池
public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...
最新文章
- vant UI库组件, 与HTML 标签冲突
- 全国首个海底数据中心落地三亚,拉开海洋新基建赋能低碳算力序幕
- python中tell_Python的File tell()方法使用方法及作用解析(实例)
- leetcode 438. Find All Anagrams in a String | 438. 找到字符串中所有字母异位词(Java)
- 最优化课程(part1)
- tensorflow之tfrecord
- 《Windows 8 权威指南》——2.10 几招解决Windows 8 Metro应用打不开的问题
- listview优化方案
- 去掉GaussView 3.07启动警告窗口的完整解决方案
- CAJ 文件转换为 PDF 文件
- 二维码名片的生成与读取
- 使用 vue-waterfall2插件 vue 瀑布流
- 2022茶艺师(初级)考试试题模拟考试平台操作
- allegro 封装shape焊盘问题 Unable to load shape symbol
- 综述:基于影像基因组学的肺癌诊断治疗方法研究
- Windows让Tomcat以Apr的方式运行
- SQL Server 导入.mdf和.ldf文件
- 二叉树的遍历 详解及实现
- JAVA基础(七)JAVA面向对象
- 拼多多贴钱卖车,揭示汽车经销商现状