Встречается на собеседованиях • сегодня
Какая проблема может произойти с неатомарным инкрементом в многопоточной среде
Неатомарный инкремент (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(); // Атомарно и безопасно
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы