Java父线程(或是主线程)等待所有子线程退出的实例
作者:牛孝祖 时间:2022-10-23 16:25:50
实例如下:
static void testLock1(){
final AtomicInteger waitCount = new AtomicInteger(30000);
final Object waitObj = new Object();
System.out.println("start"+System.currentTimeMillis());
for (int i=0;i<30000;i++) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
waitCount.decrementAndGet();
synchronized(waitObj){
waitObj.notifyAll();
}
}
}).start();
}
while( waitCount.intValue()>0) {
synchronized (waitObj) {
if(waitCount.intValue()>0){
try {
waitObj.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
System.out.println("ok"+System.currentTimeMillis());
}
static void testLock2(){
final CountDownLatch workLauch = new CountDownLatch(30000);//计数器
System.out.println("start2"+System.currentTimeMillis());
for (int i=0;i<30000;i++) {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
workLauch.countDown();
}
}).start();
}
try {
workLauch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("ok2"+System.currentTimeMillis());
}
public static void main(String[] args) {
testLock1();
testLock2();
}
第一种是我随便写的实现,有点糙。第二种是朋友告知的一个类,java的concurrent中的,据说还有几个相似功能的类实现。这30000个线程 时间差大概是不到200ms的样子
来源:http://www.cnblogs.com/niuxiaozu/p/5973937.html
标签:Java父线程,主线程,等待,子线程
0
投稿
猜你喜欢
Android 存储路径选择方法
2022-04-03 21:05:42
java实现双色球机选号码生成器
2022-10-05 07:41:33
浅谈Android Studio如何Debug对应so文件C/C++代码
2023-11-20 03:23:35
结合mybatis-plus实现简单不需要写sql的多表查询
2021-06-25 12:54:22
Java利用for循环打印菱形的实例教程
2021-08-16 14:18:44
Android使用开源组件PagerBottomTabStrip实现底部菜单和顶部导航功能
2023-07-02 11:32:40
浅谈Spring Boot 开发REST接口最佳实践
2021-10-08 12:24:35
深入分析c# 继承
2023-02-18 21:36:31
快速了解如何在.NETCORE中使用Generic-Host建立主机
2022-05-08 15:04:12
springboot默认日志框架选择源码解析(推荐)
2021-06-19 08:02:51
C#编程实现动态改变配置文件信息的方法
2022-05-01 15:09:25
Android自定义评分控件的完整实例
2021-10-26 19:25:58
在Android上实现HttpServer的示例代码
2022-02-20 04:04:14
java springboot poi 从controller 接收不同类型excel 文件处理
2023-10-17 14:26:05
springboot2+es7使用RestHighLevelClient的示例代码
2023-11-25 01:23:18
使用Springboot搭建OAuth2.0 Server的方法示例
2023-01-28 07:19:16
C#将DataTable转换成list的方法
2023-03-06 01:20:45
JDK 7 新特性小结实例代码解析
2022-04-18 13:03:07
Java基于websocket协议与netty实时视频弹幕交互实现
2023-08-16 11:55:46
C++类和对象之多态详解
2023-05-10 18:52:03