Sobes.tech
Junior — Middle

Co się dzieje, gdy kilka wątków jednocześnie modyfikuje jedną zmienną w pętli?

sobes.tech AI

Odpowiedź od AI

Когда несколько потоков одновременно изменяют одну переменную внутри цикла без синхронизации, возникает состояние гонки (race condition). Это приводит к непредсказуемым результатам, так как операции чтения и записи могут пересекаться.

Например, если два потока одновременно увеличивают счетчик:

int counter = 0;

// В двух потоках выполняется:
counter = counter + 1;

Из-за того, что операция увеличения не атомарна (состоит из чтения, увеличения и записи), итоговое значение может быть меньше ожидаемого.

Чтобы избежать этого, нужно использовать механизмы синхронизации, например, ключевое слово synchronized или атомарные классы из java.util.concurrent.atomic:

AtomicInteger counter = new AtomicInteger(0);

// В потоках:
counter.incrementAndGet();

Это гарантирует корректное обновление переменной без потери данных.