实例如下:
static void testlock1(){final atomicinteger waitcount = new AtomicInteger(30000);最終的なオブジェクトwaitobj = new object(); system.out.println( "start"+system.currenttimemillis()); for(int i = 0; i <30000; i ++){new Stread(new runnable(){@Override public void run(){try {swreet.sleep(10);} catch(interruptedexception e){e.printstacktrace();} waitcount.decrementget(); synchronized(waitobj); })。始める(); } while(waitcount.intvalue()> 0){synchronized(waitobj){if(waitcount.intvalue()> 0){try {waitobj.wait(); } catch(arturnedexception e){e.printstacktrace(); }}}} system.out.println( "ok"+system.currenttimemillis()); } static void testlock2(){final countdownlatch worklauch = new CountDownLatch(30000); // for(int i = 0; i <30000; i ++){new Stread(new runnable(){@Override public void run(){try {shood.sleep(10);} catch(arturtedexception e){e.printstacktrace();} worklauch.countdown();}})。 } try {worklauch.await(); } catch(arturnedexception e){e.printstacktrace(); } system.out.println( "ok2"+system.currenttimemillis()); } public static void main(string [] args){testlock1(); testlock2(); }第一种是我随便写的实现、有点糙。第二种是朋友告知的一个类、java的concurrent中的、据说还有几个相似功能的类实现。这30000个线程200ms的样子
以上这篇java父线程(或是主线程)等待所有子线程退出的实例就是小编分享给大家的全部内容了、希望能给大家一个参考、也希望大家多多支持武林网。