java join用法

前提:spa

設有兩個線程,其中一個爲主線程,在主線程中調用另一個線程,稱爲目標線程線程

情景:code

在主線程中建立子線程,並啓動子線程,而子線程中要進行大量的耗時運算,當主線程處理到某個位置時,須要用到子線程的處理結果(此時子線程還未結束),這時候就要用到join();方法。在主線程的某個位置執行了目標線程.join();方法後,主線程將再也不繼續向下執行,而將等待目標線程終止後,主線程纔會再向下執行。 資源


代碼例子以下 :unicode

package commicropower;
it

class JoinTest1 implements Runnable{io

public static int a = 0;  class

 

    public void run() {  方法

        for (int k = 0; k < 5; k++) {  im

            a = a + 1;  

        }  

    }  

}


public class JoinTest {  

    public static void main(String[] args) throws Exception {  

        Runnable r = new JoinTest1();  

        Thread t = new Thread(r);  

        t.start();        

        t.join();

        System.out.println(JoinTest1.a);  

    }         

}  

加入t.join();方法運行結果爲5  不加此方法, 運行結果爲0

總結:當主線程 main方法執行System.out.println(a);這條語句時,線程尚未真正開始運行,或許正在爲它分配資源準備運行。由於爲線程分配資源須要時間,而main方法執行完t.start()方法後繼續往下執行System.out.println(a);,這個時候獲得的結果是a尚未被 改變的值0 。怎樣才能讓輸出結果爲5!其實很簡單,join() 方法提供了這種功能。join() 方法,它可以使調用該方法的線程在此以前執行完畢。

相關文章
相關標籤/搜索