Junior — Middle
86
Что происходит, когда несколько потоков одновременно изменяют одну переменную внутри цикла?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Когда несколько потоков одновременно изменяют одну переменную внутри цикла без синхронизации, возникает состояние гонки (race condition). Это приводит к непредсказуемым результатам, так как операции чтения и записи могут пересекаться.
Например, если два потока одновременно увеличивают счетчик:
int counter = 0;
// В двух потоках выполняется:
counter = counter + 1;
Из-за того, что операция увеличения не атомарна (состоит из чтения, увеличения и записи), итоговое значение может быть меньше ожидаемого.
Чтобы избежать этого, нужно использовать механизмы синхронизации, например, ключевое слово synchronized или атомарные классы из java.util.concurrent.atomic:
AtomicInteger counter = new AtomicInteger(0);
// В потоках:
counter.incrementAndGet();
Это гарантирует корректное обновление переменной без потери данных.