Зачем volatile?

Ответ

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

Разбор: volatile даёт две гарантии: видимость (чтение всегда идёт из main memory, минуя регистры/кэш) и запрет на переупорядочивание операций вокруг этой переменной (барьеры памяти). Главная ловушка: атомарность составных операций (i++ = read-modify-write) не гарантируется — для этого нужны Atomic-классы или synchronized.

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

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