Sobes.tech
Junior — Middle

O que acontece quando vários threads modificam simultaneamente uma variável dentro de um ciclo?

sobes.tech IA

Resposta da IA

Quando múltiplas threads modificam simultaneamente uma variável dentro de um ciclo sem sincronização, ocorre uma condição de corrida (race condition). Isso leva a resultados imprevisíveis, pois operações de leitura e escrita podem se sobrepor.

Por exemplo, se duas threads aumentam um contador ao mesmo tempo:

int counter = 0;

// Em ambas as threads:
counter = counter + 1;

Devido ao fato de que a operação de incremento não é atômica (consiste em leitura, incremento e escrita), o valor final pode ser menor do que o esperado.

Para evitar isso, deve-se usar mecanismos de sincronização, como a palavra-chave synchronized ou classes atômicas de java.util.concurrent.atomic:

AtomicInteger counter = new AtomicInteger(0);

// Nas threads:
counter.incrementAndGet();

Isso garante uma atualização correta da variável sem perda de dados.