Многопоточность trainee
Чем Atomic лучше volatile?
Ответ
AtomicInteger / AtomicLong / AtomicReference дают и видимость, и атомарность через CAS (compare-and-swap). CAS — операция процессора «прочитать, проверить, заменить» одной инструкцией без блокировок. compareAndSet выполняет составную операцию атомарно, чего volatile (только видимость) не умеет для i++.
Разбор: volatile даёт только видимость, но не атомарность составных операций вроде i++, а Atomic через CAS (compareAndSet) выполняет чтение-сравнение-замену одной инструкцией без блокировок, добавляя к видимости атомарность. Ложны утверждения, что Atomic использует synchronized, что volatile не обеспечивает видимость и что CAS не обращается к памяти.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.