物件的notify方法的含義和物件鎖釋放的三種情況

2021-07-12 03:19:35 字數 380 閱讀 7704

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...