1、在研究join的用法以前,先明確兩件事情。
1.join方法定義在Thread類中,則調用者必須是一個線程,
例如:
Thread t = new CustomThread();//這裏通常是自定義的線程類
t.start();//線程起動
t.join();//此處會拋出InterruptedException異常
2.上面的兩行代碼也是在一個線程裏面執行的。
以上出現了兩個線程,一個是咱們自定義的線程類,咱們實現了run方法,作一些咱們須要的工做;另一個線程,生成咱們自定義線程類的對象,而後執行
customThread.start();
customThread.join();
在這種狀況下,兩個線程的關係是一個線程由另一個線程生成並起動,因此咱們暫且認爲第一個線程叫作「子線程」,另一個線程叫作「主線程」。
2、爲何要用join()方法
主線程生成並起動了子線程,而子線程裏要進行大量的耗時的運算(這裏能夠借鑑下線程的做用),當主線程處理完其餘的事務後,須要用到子線程的處理結果,這個時候就要用到join();方法了。
3、join方法的做用
在網上看到有人說「將兩個線程合併」。這樣解釋我以爲理解起來還更麻煩。不如就借鑑下API裏的說法:
「等待該線程終止。」
解釋一下,是主線程(我在「一」裏已經命名過了)等待子線程的終止。也就是在子線程調用了join()方法後面的代碼,只有等到子線程結束了才能執行。(Waits for this thread to die.)
4、用實例來理解this
直接到原地址查看,複製過來樣式不線程