Thread Join
Java線程連接方法可用于暫停當前線程執(zhí)行,線層死亡除外,有三個重載的連接函數(shù)
Java線程連接
public final void join()
此連接方法使當前線程等待,直到調(diào)用的線程死亡。若線程被中斷,則拋出InterruptedException
public final synchronized void join(long millis)
此連接方法用于等待被調(diào)用的線程DEAD或等待指定的毫秒。線程執(zhí)行依賴于OS,因此不保證當前線程只等待給定的時間
public final synchronized void join(long millis, int nanaos)
此連接方法用于等待線程死亡給定的毫秒 + 納秒
示例
示例程序目標是確保main 是最后一個完成的線程,第三個線程是在第一個線程死亡時啟動。
package coreofjava.javathread.threadjoin;
import coreofjava.javathread.javarunnable.*;
public class ThreadJoin {
public static void main(String[] args) {
Thread t1 = new Thread(new RunnableTest(), "t1");
Thread t2 = new Thread(new RunnableTest(), "t2");
Thread t3 = new Thread(new RunnableTest(), "t3");
t1.start();
// 等待2s開始第二個線程
try {
t1.join(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
t2.start();
// 若第一個線程死亡則開始第三個線程
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
t3.start();
// 在結(jié)束main線程之前等待所有的線程結(jié)束執(zhí)行
try {
t1.join();
t2.join();
t3.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}