Java多线程中关于join方法的使用实例解析
先上代码
新建一个Thread,代码如下:
packagecom.thread.test;
publicclassMyThreadextendsThread{
privateStringname;
publicMyThread(Stringname){
this.name=name;
}
@Override
publicvoidrun(){
for(inti=0;i<100;i++){
System.out.println(name+"["+i+"]");
}
super.run();
}
}
之后新建测试类,代码如下:
packagecom.thread.test;
/*
*0-50执行的是主线程,50-100执行的是A线程,并且将A线程完全执行完后才继续执行主线程
*/
publicclassThreadDemo{
publicstaticvoidmain(String[]args){
MyThreadt=newMyThread("A");
t.start();
for(inti=0;i<100;i++){
if(i>50){
try{
t.join();
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
System.out.println("主线程"+"["+i+"]");
}
}
}
下面是JavaPlatformSE8API中对Thread中Join方法的解释:
publicfinalvoidjoin(longmillis) throwsInterruptedExceptionWaitsatmostmillismillisecondsforthisthreadtodie.Atimeoutof0meanstowaitforever. Thisimplementationusesaloopofthis.waitcallsconditionedonthis.isAlive.Asathreadterminatesthethis.notifyAllmethodisinvoked.Itisrecommendedthatapplicationsnotusewait,notify,ornotifyAllonThreadinstances. Parameters: millis-thetimetowaitinmilliseconds Throws: IllegalArgumentException-ifthevalueofmillisisnegative InterruptedException-ifanythreadhasinterruptedthecurrentthread.Theinterruptedstatusofthecurrentthreadisclearedwhenthisexceptionisthrown.
先上代码
新建一个Thread,代码如下:
packagecom.thread.test;
publicclassMyThreadextendsThread{
privateStringname;
publicMyThread(Stringname){
this.name=name;
}
@Override
publicvoidrun(){
for(inti=0;i<100;i++){
System.out.println(name+"["+i+"]");
}
super.run();
}
}
之后新建测试类,代码如下:
packagecom.thread.test;
/*
*0-50执行的是主线程,50-100执行的是A线程,并且将A线程完全执行完后才继续执行主线程
*/
publicclassThreadDemo{
publicstaticvoidmain(String[]args){
MyThreadt=newMyThread("A");
t.start();
for(inti=0;i<100;i++){
if(i>50){
try{
t.join();
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
System.out.println("主线程"+"["+i+"]");
}
}
}
下面是JavaPlatformSE8API中对Thread中Join方法的解释:
publicfinalvoidjoin(longmillis) throwsInterruptedExceptionWaitsatmostmillismillisecondsforthisthreadtodie.Atimeoutof0meanstowaitforever. Thisimplementationusesaloopofthis.waitcallsconditionedonthis.isAlive.Asathreadterminatesthethis.notifyAllmethodisinvoked.Itisrecommendedthatapplicationsnotusewait,notify,ornotifyAllonThreadinstances. Parameters: millis-thetimetowaitinmilliseconds Throws: IllegalArgumentException-ifthevalueofmillisisnegative InterruptedException-ifanythreadhasinterruptedthecurrentthread.Theinterruptedstatusofthecurrentthreadisclearedwhenthisexceptionisthrown.
我自己的理解就是会强行进入使用join方法的线程,其他线程等待该线程完全执行完后才会进来。
热门推荐
10 祝女儿简短祝福语大全
11 大学新年祝福语简短创意
12 元旦适合的祝福语简短
13 朋友出远门祝福语简短
14 初六简短的祝福语
15 祝男孩生日祝福语简短
16 同事调离的祝福语简短
17 拜年红包的祝福语简短
18 妈妈生日祝福语简短励志