Что такое synchronized и для чего используется?

synchronized обеспечивает взаимное исключение на мониторе и гарантии видимости между его освобождением и последующим захватом. Для защиты общих данных потоки должны использовать один монитор.

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

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

synchronized обеспечивает взаимное исключение на мониторе и гарантии видимости между его освобождением и последующим захватом. Для защиты общих данных потоки должны использовать один монитор.

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

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

synchronized обеспечивает взаимное исключение на мониторе и гарантии видимости между его освобождением и последующим захватом. Для защиты общих данных потоки должны использовать один монитор.

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

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

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

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

Подробнее