Java实现等待所有子线程结束后再执行一段代码的方法
时间:2019-03-31
本文章向大家介绍Java实现等待所有子线程结束后再执行一段代码的方法,主要包括Java实现等待所有子线程结束后再执行一段代码的方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例讲述了Java实现等待所有子线程结束后再执行一段代码的方法。分享给大家供大家参考,具体如下:
今天有一个需求是:在一个方法中开启了一个子线程来执行操作,返回值依赖于子线程的执行结果,这样如果要返回正确的值,就需要开启子线程后
主线程等待子线程,然后子线程执行结束后,主线程再继续执行。
主线程等待子线程需要用到:CountDownLatch
代码如下:
import java.util.concurrent.CountDownLatch; public class Counter { public static int count = 0; static CountDownLatch cdl=new CountDownLatch(1000);//这里的数字,开启几个线程就写几 public synchronized static void inc() throws InterruptedException{//注意,如果不加上synchronized,由于并发写入,结果会小于1000 Thread.sleep(1); count++; cdl.countDown(); } public static void main(String[] args) throws InterruptedException{ for(int i = 0; i < 1000; i++){ new Thread(new Runnable(){ public void run() { // TODO Auto-generated method stub try { Counter.inc(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ).start(); } cdl.await();//主线程等待子线程执行输出 System.out.println(count); } }
更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
- android客户端和服务端js交互
- 【实验手册】使用Visual Studio Code 开发.NET Core应用程序
- android调用服务端的js
- 保存数据返回后可以继续编辑
- 深度学习Matlab工具箱代码详解概览
- android读取sd卡图片并进行缩放操作
- 深度学习Matlab工具箱代码注释之cnnapplygrads.m
- android异步操作
- 深度学习Matlab工具箱代码注释之cnnbp.m
- 仿大众点评悬浮购买框效果
- 深度学习Matlab工具箱代码注释之cnnff.m
- 图片缩放,拖拽等操作
- 深度学习Matlab工具箱代码注释之cnntrain.m
- 深度学习Matlab工具箱代码注释之cnnsetup.m
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Windows启动HDFS报错 - 系统找不到文件 hadoop。
- Windows启动HDFS报错 - org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
- Windows启动HDFS报错 - Could not locate Hadoop executable: E:soft_workhadoop-2.6.0binwinutils.exe
- Windows中jps命令无法查看java进程问题
- Windows搭建HDFS 2.6.0(附加搭建Hadoop)
- Windows搭建HBase 2.0.2
- 病毒与安全防护-网络安全
- 应用层安全协议-Kerberos
- 组网设备
- 网络管理
- 3.字体样式-CSS基础
- 求回文数
- 罗马数字转整数
- (十二) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
- 树莓派定时任务不生效