Зачем нужен volatile?

Ответ

Гарантирует видимость изменений переменной между потоками (без кэширования в регистрах). НЕ гарантирует атомарность операций типа i++.

Разбор: volatile гарантирует видимость изменений между потоками (чтение/запись идут напрямую в основную память) и устанавливает барьеры памяти, запрещающие reordering. Ловушка: он не даёт ни атомарности составных операций (i++), ни взаимного исключения — для этого нужны synchronized или Atomic-классы.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться