加入一個線程
阿新 • • 發佈:2018-08-15
str 公司 一段 nbsp 自己的 解析 結束 自己 我不 一個線程X可以在其他線程Y之上調用join()方法,其效果是X等待一段時間直到第二個線程Y結束才繼續執行。如果某個線程在另一個線程t上調用t.join(),此線程將被掛起,直到目標線程t結束才恢復。
也可以在調用join()時帶上一個超時參數(單位可以是毫秒,或者毫秒和納秒),這樣如果目標線程在這段時間到期時還沒有結束的話,join方法總能返回。
對join方法的調用可以被中斷,做法是在調用線程上調用interrupt方法,這時需要用到try-catch語句。——《Java編程思想》
調用誰(線程A)的join方法,就要等誰(A)執行結束。
比喻解析:
一般情況
假如我開車在路上兜風,經過路邊一家店,發現我的朋友在店裏,他說他要跟我一塊兜風(他調用的他的join方法),我答應了。不過他點了一杯奶茶,要等一會兒。所以我的車就停在原地了,沒有繼續向前跑。(我要等待它完成)等到他拿到奶茶,上車後,我就繼續向前開。(我繼續執行我的任務)
這裏,我和他都是線程,我是線程A,他是線程B。我的任務是開車兜風,而他的任務是等待奶茶完成。
超時情況
他說要等奶茶做好,我說“我可沒那麽多時間,我給你3分鐘”,他答應了。但是過了3分鐘,他奶茶還是沒好。我不耐煩,就走了(繼續執行我的任務)
打斷情況
他說等奶茶做好就上車,我就在原地等。突然他接到一個電話,他的組長大發雷霆,叫他馬上回公司,他寫的代碼有問題。然後他對我說“完了,我現在要馬上回公司。對不住啊”(他調用了他的interrupt方法)。我罵了一句“艹”,然後繼續向前開(繼續執行我的任務)。他呢,則奶茶都沒來得及拿(他自己的任務也沒完成),就會屁顛屁顛地回公司了。
加入一個線程