Что такое монитор объекта? Как работает synchronized?

Ответ

У каждого объекта есть монитор. synchronized захватывает его при входе, освобождает при выходе (включая исключения).

Разбор: synchronized гарантированно освобождает монитор при выходе из блока в любом случае — и при нормальном завершении, и при выбросе исключения (через monitorenter/monitorexit в байткоде). Главные ловушки: монитор есть у каждого экземпляра, а не только у Class; synchronized-метод экземпляра блокирует this, а не класс; и освобождение не зависит от GC.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться