sleep、wait、notify、notifyAll的區別


Sleep 和wait

1. sleep是Thread類的靜態方法,wait是Object類中定義的方法
2. Thread.sleep不會導致鎖行為的改變,如果當前線程是擁有鎖的,那么Thread.sleep不會讓線程釋放鎖,而wait 會釋放當前線程鎖
3. Thread.sleep需要設定休眠時間.Object.wait也可以設定wait時間,或者通過線程執行notify/notifyAll進行喚醒

 

notify和notifyAll

1. notify喚醒一個線程,如果有多線程在wait,可能是隨機一個

2. notifyAll喚醒所有在等待的線程,

3. 使用中盡量使用notifyAll,因為notify容易導致線程死鎖(nofity只喚醒一個,其他等待的線程沒有喚醒)

 

 

參考: https://blog.csdn.net/dreamweaver_zhou/article/details/79876805

    https://www.jianshu.com/p/25e243850bd2?appinstall=0

      https://www.cnblogs.com/happy-coder/p/6587092.html


免責聲明!

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



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