Junior — Middle
На кои елементи може безопасно да се извика методът wait(), находящи се в синхронизирана среда?
sobes.tech AI
Отговор от AI
Метод wait() в Java можно вызывать только на тех объектах, чей монитор (мониторный замок) текущий поток захватил, то есть внутри синхронизированного блока или метода, синхронизированного на этом объекте. Это означает, что безопасно вызывать wait() только на объектах, на которых вы удерживаете монитор, например:
synchronized (obj) {
obj.wait(); // безопасно
}
Если вызвать wait() вне синхронизированного контекста на этом объекте, будет выброшено IllegalMonitorStateException. Таким образом, можно вызывать wait() только на тех объектах, на которых текущий поток удерживает монитор (то есть внутри synchronized(obj) или синхронизированного метода этого объекта).