Прежде чем поток сможет ожидать
объекта, он должен получить монитор для этого объекта. Затем монитор освобождается, и поток пытается повторно захватить его после пробуждения.
Но что происходит с другими мониторами, которые поток удерживает, когда он вызывает wait
?
Рассмотрим следующий пример:
Object a = // ... Object b = // ... synchronized(a) { synchronized(b) { b.wait(); // continue } }
Когда поток вызывает b.wait ()
, снимает ли он блокировки на как a
, так и b
, или только b
?