class JoinDemo extends Thread {
JoinDemo(String nm) {
setName(nm);
start();
}
public void run() {
for (int i = 1; i <= 5; i++) {
try {
Thread.sleep(100);
} catch (Exception e) {
System.out.println(e);
}
System.out.println(i);
}
System.out.println(getName() + " exiting.");
}
public static void main(String args[]) {
JoinDemo t1 = new JoinDemo("One");
JoinDemo t2 = new JoinDemo("Two");
JoinDemo t3 = new JoinDemo("Three");
try {
t1.join();
} catch (Exception e) {
System.out.println(e);
}
System.out.println("Main Thread Exits now.");
}
}
獲得的輸出是:Java中的join()方法如何工作?
1
1
1
2
2
2
3
3
3
4
4
4
5
5
Three exiting.
One exiting.
5
Main Thread Exiting
Two exiting.
我寫上面的程序通過各種網站去後,瞭解加入的)概念(。但仍然無法獲得它。我面臨的問題是我使用了t1.join()。所以線程應該在三個線程之前退出,但是在這之前線程需要先退出三個線程。每次運行該程序時,輸出都是不同的。有時候,有兩次是在一次之前退出,或者是在三次之前退出。不應該在任何其他線程之前掛接一個退出?由於t1.join()等待線程之一終止之前三和一??
尋求幫助時,做的第一件事就是確保你的代碼的格式和可讀性很強縮進。這次我已經爲你做了。 –
當達到t1.join()時,顯然t1已經完成。要獲得該效果可能會更改爲Thread.sleep(2000)。 – PeterMmm
幾乎完全相同的問題在這裏問:http:// stackoverflow。com/questions/18479771/java-multithreading-concept-and-join-method?rq = 1有一個很好的答案。 – danofa