Explique o mecanismo de funcionamento da classe AtomicInteger e o seu papel na implementação de operações thread-safe
sobes.tech IA
Resposta da IA
A classe AtomicInteger do pacote java.util.concurrent.atomic fornece um valor inteiro cujas operações são realizadas de forma atômica, ou seja, indivisível e sem risco de condições de corrida em ambientes multithread.
O mecanismo de funcionamento baseia-se no uso de instruções de hardware de baixo nível (por exemplo, CAS — compare-and-swap), que garantem que as operações de alteração de valor ocorram sem interrupções e sem conflitos entre threads.
O papel do AtomicInteger é garantir operações thread-safe de incremento, decremento, definição e comparação sem a necessidade de usar blocos sincronizados ou bloqueios explícitos, o que melhora o desempenho e simplifica o código.
Exemplo de uso:
import java.util.concurrent.atomic.AtomicInteger;
public class Counter {
private AtomicInteger count = new AtomicInteger(0);
public void increment() {
count.incrementAndGet(); // incremento atômico
}
public int getCount() {
return count.get();
}
}
Neste exemplo, vários threads podem chamar increment() de forma segura sem risco de perder atualizações do contador.