Какие мониторы используются при использовании ключевого слова synchronized? Где его можно ставить и какие мониторы там применяются?

synchronized у instance-метода захватывает монитор this, у static-метода — объекта Class соответствующего класса. В synchronized(expression) монитором служит объект, полученный вычислением expression.

Короткий ответ

Что ответить на собеседовании

synchronized у instance-метода захватывает монитор this, у static-метода — объекта Class соответствующего класса. В synchronized(expression) монитором служит объект, полученный вычислением expression.

Подробный разбор

Ответ с пояснениями

synchronized у instance-метода захватывает монитор this, у static-метода — объекта Class соответствующего класса. В synchronized(expression) монитором служит объект, полученный вычислением expression.

Разные экземпляры имеют разные мониторы, поэтому их instance-методы не блокируют друг друга автоматически. Static и instance synchronized тоже используют разные locks. Монитор реентерабелен, а блок освобождает его и при исключении. Нельзя использовать null; для защиты состояния часто выбирают private final lock, избегая публичных или интернированных объектов с неизвестными внешними пользователями.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее