Что произойдёт, если в рамках одного класса несколько полей отметить модификатором volatile?

Каждое volatile-поле получит собственные гарантии видимости и порядка доступа. Но несколько volatile-полей не превращаются в единое атомарное состояние.

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

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

Каждое volatile-поле получит собственные гарантии видимости и порядка доступа. Но несколько volatile-полей не превращаются в единое атомарное состояние.

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

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

Условие

Что произойдёт, если в рамках одного класса несколько полей отметить модификатором volatile?

Ответ

Каждое volatile-поле получит собственные гарантии видимости и порядка доступа. Но несколько volatile-полей не превращаются в единое атомарное состояние.

Читатель может увидеть новое значение одного поля и старое другого, если изменения выполняются отдельными действиями. Для инварианта между полями используйте общий lock либо неизменяемый объект состояния, публикуемый одной ссылкой. volatile также не делает атомарным x++. Он подходит для публикации и флагов, а не заменяет любую синхронизацию.

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

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

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

Подробнее