Вопрос проверяет понимание мониторов объектов и правил безопасной синхронизации потоков.
Короткий ответ
Нет, вызывать wait() и notify() вне synchronized-блока нельзя.
Если попытаться это сделать, будет выброшено IllegalMonitorStateException.
Это связано с тем, что данные методы работают только с монитором объекта.
Поток должен владеть монитором, чтобы управлять ожиданием других потоков.
Так Java защищает модель синхронизации от ошибок.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.