Sobes.tech
Junior — Middle

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.