Встречается на собеседованиях • сегодня

Какая проблема может произойти с неатомарным инкрементом в многопоточной среде

Неатомарный инкремент (i++) в многопоточной среде может привести к потере обновлений из-за состояния гонки (race condition). Операция i++ состоит из трёх шагов: чтение значения, увеличение, запись. Если два потока одновременно читают значение, оба увеличат его на 1 и запишут обратно, результат будет некорректным (вместо +2 получится +1).

Пример:

java
int counter = 0;

// Поток 1: counter++ (читает 0, увеличивает до 1, записывает 1)
// Поток 2: counter++ (читает 0, увеличивает до 1, записывает 1)
// Итог: counter = 1, хотя должно быть 2.

Решение: Использовать атомарные операции (AtomicInteger, synchronized или volatile + правильную синхронизацию).

java
AtomicInteger atomicCounter = new AtomicInteger(0);
atomicCounter.incrementAndGet(); // Атомарно и безопасно
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы