synchronized у instance-метода захватывает монитор this, у static-метода — объекта Class соответствующего класса. В synchronized(expression) монитором служит объект, полученный вычислением expression.
Какие мониторы используются при использовании ключевого слова synchronized? Где его можно ставить и какие мониторы там применяются?
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, избегая публичных или интернированных объектов с неизвестными внешними пользователями.