Junior — Middle
Was passiert, wenn mehrere Threads gleichzeitig eine Variable innerhalb einer Schleife ändern?
sobes.tech KI
Antwort von AI
Когда несколько потоков одновременно изменяют одну переменную внутри цикла без синхронизации, возникает состояние гонки (race condition). Это приводит к непредсказуемым результатам, так как операции чтения и записи могут пересекаться.
Например, если два потока одновременно увеличивают счетчик:
int counter = 0;
// В двух потоках выполняется:
counter = counter + 1;
Из-за того, что операция увеличения не атомарна (состоит из чтения, увеличения и записи), итоговое значение может быть меньше ожидаемого.
Чтобы избежать этого, нужно использовать механизмы синхронизации, например, ключевое слово synchronized или атомарные классы из java.util.concurrent.atomic:
AtomicInteger counter = new AtomicInteger(0);
// В потоках:
counter.incrementAndGet();
Это гарантирует корректное обновление переменной без потери данных.