Uma operação atômica se completa de forma indivisível — nenhuma outra thread vê um estado pela metade; visibilidade de memória é se as escritas de uma thread são vistas por outra; barreiras de memória impõem ordenação para que essas escritas se tornem visíveis. Locks não são a única preocupação — o modelo de memória é.
Atomicidade
Uma op atômica (ex.: fetch_add, compare-and-swap) executa como um único passo indivisível, então nenhuma race a divide. Hardware e linguagem fornecem atômicos para contadores e flags sem um lock completo.
();
counter.incrementAndGet();
