在對象上線程可以wait
之前,它必須獲取該對象上的監視器。監視器隨後被釋放,並且該線程一旦被喚醒就試圖重新獲取它。Java:線程在對象上等待時是否釋放所有監視器?
但是當線程調用wait
時線程保持其他監視器會發生什麼?
考慮這個例子:
Object a = // ... Object b = // ... synchronized(a) { synchronized(b) { b.wait(); // continue } }
當線程調用b.wait()
,將其發佈在都a
和b
,或僅b
鎖?