Что гарантирует volatile?

Ответ

Видимость записи между потоками — запись одного потока становится сразу видна другим. Запрет переупорядочивания инструкций вокруг volatile. НО volatile НЕ даёт атомарности составных операций. i++ — это read-modify-write, поэтому остаётся гонкой; для атомарного инкремента нужны AtomicInteger или synchronized.

Разбор: volatile обеспечивает видимость записей между потоками и запрещает переупорядочивание вокруг обращения к полю, но не даёт ни атомарности, ни взаимного исключения. Поэтому read-modify-write вроде i++ остаётся гонкой; для атомарного инкремента нужны AtomicInteger или synchronized.

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

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