Многопоточность trainee
Что гарантирует volatile?
Ответ
Видимость записи между потоками — запись одного потока становится сразу видна другим. Запрет переупорядочивания инструкций вокруг volatile. НО volatile НЕ даёт атомарности составных операций. i++ — это read-modify-write, поэтому остаётся гонкой; для атомарного инкремента нужны AtomicInteger или synchronized.
Разбор: volatile обеспечивает видимость записей между потоками и запрещает переупорядочивание вокруг обращения к полю, но не даёт ни атомарности, ни взаимного исключения. Поэтому read-modify-write вроде i++ остаётся гонкой; для атомарного инкремента нужны AtomicInteger или synchronized.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.