2013-01-13 28 views
2

例加入我有2個線程:t1和t2和我的代碼是兩個線程調用java中

t1.start(); 
t2.start(); 

t1.join(); 
t2.join(); 

我已經知道join方法的概念。但在這種情況下,我不知道連接方法的機制。哪個線程會等待其他線程完成?

謝謝。

+1

這個問題完全由Javadoc解答。 – EJP

+0

當你顯然不知道的時候,你很難理解如何聲稱'知道join()'的概念。 – EJP

回答

7

其開始t1t2等待t1t2線程(主,隱含的)來完成,分別。

+8

特別是,它首先等待t1完成,然後t2完成。 – Sanchit

+0

換句話說,它們(t1和t2)不會並行運行。 – zgulser

+1

@zgulser不!當然,t1和t2並行運行!但是主線程按照給定的順序等待它們(它等待t1的結束,然後是t2的結束,無論它們真正終止的順序如何)。 –

-1

join()方法等待線程死亡。換句話說,它會導致當前正在運行的線程停止執行,直到它所加入的線程完成其任務。

主線程將等待所有子線程完成。主線程將啓動t1並加入t2。線程t2完成後,其任務t1將再次執行。

+0

第一句以外沒有任何答案。 'join()'阻塞* current *線程直到目標線程退出,而不是所有當前正在運行的線程。主線程不會等待所有子線程完成。它不會將't2'與't1'連接起來。在't1.join()'之後't1'不會再執行。你似乎並不瞭解它的第一件事。 – EJP