1,notify的含義
(1)notify一次只隨機通知乙個執行緒進行喚醒
(2) 在執行了notify方法之後,當前執行緒不會馬上釋放該物件鎖,呈wait狀態的執行緒也不能馬上獲得該物件鎖,
要等到執行notify方法的執行緒將程式執行完 ,也就是退出sychronized**塊後,當前執行緒才會釋放鎖,
而呈wait狀態所在的執行緒才可以獲取該物件鎖。
2,物件鎖釋放的三種情況
序號場景
1執行完同步**塊就會釋放物件的鎖
2在執行同步**塊的過程中,遇到異常而導致執行緒終止,鎖也會被釋放
3在執行同步**塊的過程中,執行了鎖所屬物件的wait方法,這個執行緒會釋放物件鎖,而此執行緒物件會進入執行緒等待池中,等待被喚醒
notify和notifyAll的區別
鎖池entrylist 等待池waitset 鎖池 假設執行緒a已經擁有了某個物件 不是類 的鎖,而其他執行緒b,c想要呼叫這個物件的某個synchronized方法 或者塊 由於b,c執行緒在進入物件的synchronized方法 或者塊 之前就必須先獲得該物件鎖的擁有權,而恰巧該物件的鎖目前正被...
14 5 wait和notify方法 停止執行緒
wait 乙個執行緒如果執行了wait方法,那個該執行緒會進入乙個以鎖物件為識別符號的執行緒池中等待。等著中會釋放資源。notify 如果乙個執行緒開啟了notify方法,那麼久會喚醒以鎖物件為識別符號的執行緒中其中的乙個。notifyall 喚醒全部的執行緒。這個2個方法一定要用鎖物件來呼叫。st...
為什麼wait和notify方法要在同步塊中呼叫?
public static void main string args throws interruptedexception 報錯 還是報錯 正確的寫法 public static void main string args throws interruptedexception 也就是說wait...