java多线程中,join方法使用的较为频繁。本次举了两个例子,进一步说明该方法的作用:
示例代码:
public class ThreadJoin {
public static void main(String args[]){
ThreadJoin threadJoin = new ThreadJoin();
try {
threadJoin.runThread();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void runThread() throws InterruptedException{
Thread t1 = new Thread(new Thread1(),"线程1");
Thread t2 = new Thread(new Thread2(),"线程2");
t1.start();
t1.join();
t2.start();
}
private class Thread1 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
try {
System.out.println("Thread1 start");
Thread.sleep(1000);
System.out.println("Thread1 end");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private class Thread2 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Thread2 end");
}
}
}
上述代码中,join方法中都没有提供参数,如:t1.join(); 运行结果永远是:
Thread1 start
Thread1 end
Thread2 end
如果join方法中的参数小于线程1执行其逻辑代码块的时间,等待时间以join方法中的时间为准。如,如果将示例中的t1.join();改成t1.join(500),而t1线程中的全部逻辑体执行完需要1000ms,则在500ms后,t2就启动了。这时候的执行结果为:
Thread1 start
Thread2 end
Thread1 end
本文通过示例代码详细解释了Java多线程中join方法的使用方式及影响,包括如何控制线程执行顺序和等待时间。

824

被折叠的 条评论
为什么被折叠?



