Índice:
Definição - O que significa Atomic?
Atomic é um kit de ferramentas das classes de pacotes variáveis java.util.concurrent.atomic, que auxiliam na gravação de algoritmos de bloqueio e sem espera com a linguagem Java. Um algoritmo que requer apenas threads parciais para progresso constante é livre de bloqueios. Em um algoritmo sem espera, todos os threads progridem continuamente, mesmo em casos de falha ou atraso do thread. Os algoritmos de bloqueio e sem espera também são conhecidos como algoritmos sem bloqueio. Os algoritmos de não bloqueio são usados para agendamento de processos e encadeamentos no sistema operacional e nos níveis da máquina virtual Java.
Techopedia explica Atomic
Todas as classes de pacotes java.util.concurrent.atomic têm o prefixo "atomic" em seus nomes. Existem diferentes tipos de variáveis atômicas disponíveis no pacote java.util.concurrent.atomic, incluindo:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
Um exemplo é um cenário em que o segmento A mantém um bloqueio. A só pode acessar e fazer alterações nas variáveis protegidas por esse bloqueio. Se o encadeamento B retiver esse bloqueio após A, somente B poderá visualizar as alterações de A nas variáveis protegidas por esse bloqueio específico. O principal problema com o bloqueio ocorre quando B tenta adquirir um bloqueio retido por A. Nesse caso, B é bloqueado para aguardar até que o bloqueio esteja disponível. Algoritmos sem bloqueio resolvem esse problema.
O principal objetivo por trás da construção de classes atômicas é implementar estruturas de dados sem bloqueio e suas classes de infraestrutura relacionadas. As classes atômicas não servem como substitutos para java.lang.Integer e classes relacionadas. A maioria das classes de pacotes java.util.concurrent usa variáveis atômicas em vez de sincronização, direta ou indiretamente. As variáveis atômicas também são usadas para obter maior taxa de transferência, o que significa maior desempenho do servidor de aplicativos.