比如main是主线程,那么如果在main里面启动了A线程的join方法,那么主线程即等待A线程运行结束才运行。
主线程要是调用join方法,那么该线程将一直等待。因为是自己等待自己。
join()方法还有带超时限制的重载版本。 例如t.join(5000);则让线程等待5000毫秒,如果超过这个时间,则停止等待,变为可运行状态。
程序是网上收集的。
public class TestJoin { public static void main(String[] args) { MyThread2 t1 = new MyThread2("TestJoin"); t1.start(); try { t1.join(); //join()合并线程,子线程运行完之后,主线程才开始执行 } catch (InterruptedException e) { } for (int i = 0; i < 10; i++) { System.out.println("I am Main Thread"); } } } class MyThread2 extends Thread { MyThread2(String s) { super(s); } @Override public void run() { for (int i = 1; i <= 10; i++) { System.out.println("I am " + getName()); try { sleep(1000); //暂停,每一秒输出一次 } catch (InterruptedException e) { return; } } } }
程序运行结果:
I am TestJoin I am TestJoin I am TestJoin I am TestJoin I am TestJoin I am TestJoin I am TestJoin I am TestJoin I am TestJoin I am TestJoin I am Main Thread I am Main Thread I am Main Thread I am Main Thread I am Main Thread I am Main Thread I am Main Thread I am Main Thread I am Main Thread I am Main Thread