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