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