volatile гарантирует visibility — чтение volatile-переменной всегда видит последнюю запись любого потока. Без volatile поток может кешировать значение в регистре/кеше и не видеть изменения. Также volatile запрещает reordering инструкций вокруг чтения/записи. НО volatile не обеспечивает атомарность: i++ для volatile всё равно не атомарен (read-modify-write). Используй для простых флагов (volatile boolean running = true), для счётчиков — AtomicInteger.
Что делает volatile в Java?
Middle
406 просмотровAFK Offer AI
Зачем нужен StringBuilder и чем он отличается от String?