Java父线程(或是主线程)等待所有子线程退出的实例

网友投稿 249 2023-03-14


Java父线程(或是主线程)等待所有子线程退出的实例

实例如下:

static void testLock1(){

final AtomicInteger waitCount = new AtomicInteger(30000);

final Object waitObj = new mxQPKwIObject();

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);http://

} 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("shttp://tart2"+Systemhttp://.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的样子


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:开源 接口管理平台(开源接口管理工具)
下一篇:Java获取磁盘空间的两种代码示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~