Sobes.tech
Назад к вопросам
Junior — Middle
66

Можно ли считать инкремент переменной атомарной операцией в контексте многопоточности?

Ответ от нейросети

sobes.tech AI

В Java операция инкремента (например, i++) не является атомарной в контексте многопоточности. Это связано с тем, что инкремент состоит из нескольких шагов: чтение значения переменной, увеличение значения и запись обратно.

Если несколько потоков одновременно выполняют инкремент без синхронизации, возможны состояния гонки и некорректные результаты.

Для обеспечения атомарности можно использовать:

  • Класс AtomicInteger и его метод incrementAndGet() или getAndIncrement().
  • Синхронизированные блоки или методы.

Пример с AtomicInteger:

import java.util.concurrent.atomic.AtomicInteger;

AtomicInteger counter = new AtomicInteger(0);
counter.incrementAndGet(); // атомарный инкремент