我正在閱讀Java文檔,它說通知方法,它不會立即放棄控制。也就是說,如果在調用通知方法之後,在代碼的同步代碼塊中保留了一些代碼,那麼它將首先完成剩餘代碼,然後放棄控制權。等待方法是否立即放棄對鎖的控制
synchronized(this) {
// line 1
notify();
//line 2
// line 3
}
第2行和第3行仍將被執行。等待方法是否會執行相同的功能
synchronized(this) {
// line 1
wait();
//line 2
// line 3
}
是否會執行第2行和第3行?
你的意思是說,將立即放棄鎖和2號線和3號線時,它會重新獲取鎖將被執行。 – JManish
第二行釋放鎖(在JVM中監聽)。 2&3基本上是原子的;這樣就不會有通知丟失。 –