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