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