join方法,wait()和sleep()


join方法解釋:方法x.join()的作用是使所屬線程x 正常執行run()中的方法,而使得調用x.join()的線程處於無限期阻塞狀態,等待x線程銷毀后再繼續執行線程z后面的代碼。

1、方法join的主要作用就是同步,它可以使得線程之間的並行執行變為串行執行。在A線程中調用了B線程的join()方法時,

表示只有當B線程執行完畢時,A線程才能繼續執行。

2、方法join(long)是設定等待的時間。實際join()方法中調用的是join(0),當參數是0的時候表示無限期等待。

3、方法join(long)的功能在內部是使用wait(long)來實現的,所以join(long)方法具有釋放鎖的特點。

4、方法join在內部調用wait()方法進行等待,而synchronized關鍵字使用的是"對象監視器"原理作為同步。

5、在join()過程中,如果當前線程被中斷,則當前線程出現異常。(注意是調用thread.join()的線程被中斷才會進入異常,比如a線程調用b.join(),a中斷會報異常而b中斷不會異常)

 

sleep和wait的區別:

1、這兩個方法來自不同的類分別是,sleep來自Thread類,和wait來自Object類。

2、sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。

3、使用范圍:wait,notify和notifyAll只能在同步控制方法或者同步控制塊里面使用,而sleep可以在任何地方使用 。

4、sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM