淺談wait()和notify()


wait()、notify()方法屬於Object中的方法;對於Object中的方法,每個對象都擁有。

 

wait()方法:該方法用來使得當前線程進入等待狀態,直到接到通知或者被中斷打斷為止。在調用wait()方法之前,線程必須要獲得該對象的對象級鎖;換句話說就是該方法只能在同步方法或者同步塊中調用,如果沒有持有合適的鎖的話,線程將會拋出異常IllegalArgumentException。調用wait()方法之后,當前線程則釋放鎖。

notify()方法:該方法用來喚醒處於等待狀態獲取對象鎖的其他線程。如果有多個線程則線程規划器任意選出一個線程進行喚醒,使其去競爭獲取對象鎖,但線程並不會馬上就釋放該對象鎖,wait()所在的線程也不能馬上獲取該對象鎖,要程序退出同步塊或者同步方法之后,當前線程才會釋放鎖,wait()所在的線程才可以獲取該對象鎖。

 

wait()方法是釋放鎖的;notify()方法不釋放鎖,必須等到所在線程把代碼執行完。


免責聲明!

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



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