“你好,阿米戈!我看到你在學習線程方面取得了長足的進步。”
“畢竟沒那麼難。”
那太棒了!今天給大家上一節簡單的課,主題是join方法。
想像一下下面的情況:主線程創建了一個子線程來執行一些任務。時間流逝,現在主線程需要子線程執行工作的結果。但是子線程還沒有完成它的工作。主線程應該做什麼?
好問題。主線程應該做什麼?
“這就是join方法的用途。它允許我們讓一個線程等待另一個線程完成其工作:”
代碼 | 描述 |
---|---|
|
實現 Runnable 接口的類。 |
|
主線程創建一個子線程——thread1。
然後它通過調用thread1 .start();啟動它。 然後等待它完成——thread1.join (); |
一個線程可以在第二個線程的 Thread 對像上調用join方法。結果,第一個線程(調用方法)停止工作,直到第二個線程(調用其對象的 join 方法)完成。
我們需要在這里區分兩件事:我們有一個線程(一個單獨的執行環境)和一個 Thread 對象。
“就是這樣?”
“是的。”
“但是為什麼我們必須創建一個線程然後立即等待它完成呢?”
“它可能不需要馬上。它可能會在一段時間後。在啟動它的第一個子線程後,主線程可以將更多任務分配給其他線程(通過創建它們並調用start方法)。然後當它沒有任何剩餘的工作,它需要處理第一個子線程的結果。每當你需要等待另一個線程完成工作時,你需要調用 join 方法。 ”
“知道了。”
GO TO FULL VERSION