前言
本來想著給自己放鬆一下,刷刷部落格,突然被幾道面試題難倒!有三個執行緒T1,T2,T3,如何保證順序執行?似乎有點模糊了,那就大概看一下面試題吧。好記性不如爛鍵盤
*** 12萬字的java面試題整理 ***
有三個執行緒T1,T2,T3,如何保證順序執行?
在多執行緒中有多種方法讓執行緒按特定順序執行,你可以用執行緒類的join()方法在一個執行緒中啟動另一個執行緒,另外一個執行緒完成該執行緒繼續執行。為了確保三個執行緒的順序你應該先啟動最後一個(T3呼叫T2,T2呼叫T1),這樣T1就會先完成而T3最後完成。
實際上先啟動三個執行緒中哪一個都行, 因為在每個執行緒的run方法中用join方法限定了三個執行緒的執行順序。
public class JoinTest2 {
// 1.現在有T1、T2、T3三個執行緒,你怎樣保證T2在T1執行完後執行,T3在T2執行完後執行
public static void main(String[] args) {
final Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("t1");
}
});
final Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
try {
// 引用t1執行緒,等待t1執行緒執行完
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("t2");
}
});
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
try {
// 引用t2執行緒,等待t2執行緒執行完
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("t3");
}
});
t3.start();//這裡三個執行緒的啟動順序可以任意,大家可以試下!
t2.start();
t1.start();
}
}