Как работает synchronized?

Ответ

Захватывает монитор объекта. На методе — монитор this (на static — Class-объект). На блоке — указанного объекта. Только один поток одновременно.

Разбор: synchronized захватывает монитор конкретного объекта (для static-метода — Class-объект, а не this), и одновременно им владеет только один поток. Глобального монитора JVM нет — блокировки на разных объектах независимы; и synchronized — это именно взаимное исключение, а не просто упорядочивание видимости.

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

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