1. 程式人生 > >sleep和wait方法的區別(不看後悔,看了必懂)

sleep和wait方法的區別(不看後悔,看了必懂)

①原理不同

sleep()方法是Thread類的靜態方法,它會使執行緒的執行暫停一段時間,把執行機會讓給其他執行緒,等倒計時時間一到,此執行緒會自動甦醒

wait()是Object類的方法,用於執行緒間的通訊,使當前擁有鎖的程序等待,直到其他執行緒呼叫notify()方法才醒過來

②對鎖的處理機制不同

呼叫sleep()方法不釋放鎖(因為它不釋放鎖,所以容易導致死鎖問題的發生,所以一般情況下,不推薦使用sleep()方法,而推薦使用wait()方法)

呼叫wait()方法釋放掉它所佔用的鎖,從而使執行緒所在物件的其他synchronized資料可以被其他執行緒使用

③使用區域不同

wait()方法必須放在同步方法或者同步程式碼塊中使用,而sleep()可以在任何地方使用