閒話少說,我們要講的是join(),我們首先來看個例子:
|
請問程序的輸出結果是5嗎?答案是:有可能。其實你很難遇到輸出5的時候,通常情況下都不是5。當然這也和機器有嚴重的關係。爲什麼呢?我的解釋是當主線程main方法執行System.out.println(a);這條語句時,線程還沒有真正開始運行,或許正在爲它分配資源準備運行吧。因爲爲線程分配資源需要時間,而main方法執行完t.start()方法後繼續往下執行System.out.println(a);,這個時候得到的結果是a還沒有被改變的值0。怎樣才能讓輸出結果爲5!其實很簡單,join() 方法提供了這種功能。join() 方法,它能夠使調用該方法的線程在此之前執行完畢。
|
這個時候,程序輸入結果始終爲5。
爲了證明如果不使用t.join()方法,主線程main方法的System.out.println(a);語句將搶先執行,我們可以在main方法中加入一個循環,這個循環用來延長main方法執行的時間,循環次數將嚴重取決於機器性能。如果循環次數得當,我們也可以看到a的輸出結果是5。
|
這時,在我的機器上,a的輸出值始終爲5。