Что такое ключевое слово volatile в Java и для чего оно применяется?

volatile обеспечивает видимость и порядок доступа к полю между потоками. Это полезно для флага остановки или публикации состояния, но не делает составные операции атомарными.

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

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

volatile обеспечивает видимость и порядок доступа к полю между потоками. Это полезно для флага остановки или публикации состояния, но не делает составные операции атомарными.

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

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

volatile обеспечивает видимость и порядок доступа к полю между потоками. Это полезно для флага остановки или публикации состояния, но не делает составные операции атомарными.

Запись volatile связана happens-before с последующим чтением той же переменной. Благодаря этому видимы и предшествующие записи, опубликованные через эту связь. Однако counter++ остаётся чтением, вычислением и записью, поэтому возможны потерянные обновления. Для счётчика нужен atomic или lock; для сложного инварианта — согласованная защита всех частей.

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

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

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

Подробнее