Java · Intermediário · Inglês · Técnico
AtomicInteger
Inteiro cuja leitura e atualização são atômicas e sem lock, baseadas em instruções compare-and-set do processador.
Onde usar
Aparece em contadores compartilhados: incrementAndGet no lugar de synchronized. Em review: 'count++ em int não é atômico'.
Em código
var total = new AtomicInteger();
IntStream.range(0, 1000).parallel()
.forEach(i -> total.incrementAndGet());
System.out.println(total.get()); // 1000Exemplos
Use an AtomicInteger for the shared counter.
Use um AtomicInteger para o contador compartilhado.
Two atomic calls in a row are still not atomic together.
Duas chamadas atômicas seguidas ainda não são atômicas em conjunto.
Cuidado
Atomic cobre uma variável só; duas operações atômicas em sequência não formam uma operação atômica composta.