Встречается на собеседованиях • сегодня
Можно ли вызвать метод wait у Object вне блока synchronized
Нет, нельзя. Метод wait() должен вызываться внутри блока synchronized, иначе JVM бросит IllegalMonitorStateException. Это связано с тем, что wait() освобождает монитор объекта, а для этого поток должен сначала его захватить.
Пример с ошибкой:
java
Object obj = new Object();
obj.wait(); // IllegalMonitorStateExceptionПравильный вариант:
java
synchronized (obj) {
obj.wait();
}Без синхронизации нет гарантии, что проверка условия и вызов wait() будут атомарными, что может привести к race condition.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы