synchronized обеспечивает взаимное исключение на мониторе и гарантии видимости между его освобождением и последующим захватом. Для защиты общих данных потоки должны использовать один монитор.
Что такое synchronized и для чего используется?
synchronized обеспечивает взаимное исключение на мониторе и гарантии видимости между его освобождением и последующим захватом. Для защиты общих данных потоки должны использовать один монитор.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
synchronized обеспечивает взаимное исключение на мониторе и гарантии видимости между его освобождением и последующим захватом. Для защиты общих данных потоки должны использовать один монитор.
У instance-метода монитор — this, у static-метода — объект Class. Блок позволяет выбрать отдельный lock. Мониторы реентерабельны и освобождаются при нормальном выходе и исключении. Синхронизация на разных объектах не защищает общий инвариант; вложенные locks в разном порядке могут создать deadlock.