Junior — Middle
Mely elemeknél hívható biztonságosan a wait() metódus szinkronizált kontextusban?
sobes.tech MI
Válasz az MI-től
Метод wait() в Java можно вызывать только на тех объектах, чей монитор (мониторный замок) текущий поток захватил, то есть внутри синхронизированного блока или метода, синхронизированного на этом объекте. Это означает, что безопасно вызывать wait() только на объектах, на которых вы удерживаете монитор, например:
synchronized (obj) {
obj.wait(); // безопасно
}
Если вызвать wait() вне синхронизированного контекста на этом объекте, будет выброшено IllegalMonitorStateException. Таким образом, можно вызывать wait() только на тех объектах, на которых текущий поток удерживает монитор (то есть внутри synchronized(obj) или синхронизированного метода этого объекта).