Definição – o que significa Atomic?
Atomic é um kit de ferramentas de classes de pacote java.util.concurrent.atomic variáveis, que auxiliam na escrita de algoritmos de bloqueio e sem espera com a linguagem Java. Um algoritmo que requer apenas threads parciais para um progresso constante não tem bloqueio. 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 de não bloqueio. Algoritmos não bloqueadores são usados para agendamento de processos e threads nos níveis do sistema operacional e da máquina virtual Java.
Definirtec explica Atomic
Todas as classes de pacote java.util.concurrent.atomic possuem o prefixo “atômico” 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
Na linguagem Java, a sincronização coordena o acesso a campos de encadeamento compartilhados e permite apenas encadeamentos que mantêm bloqueios para acessar e modificar variáveis protegidas pelo bloqueio. As modificações deste thread são visíveis para o thread que se segue, mas somente depois que o thread libera o bloqueio.
Um exemplo é um cenário em que o encadeamento A mantém um bloqueio. A só é capaz de acessar e fazer alterações em variáveis protegidas por este bloqueio. Se o thread B mantém este bloqueio após A, então apenas B pode visualizar as alterações de A nas variáveis protegidas por aquele bloqueio específico. O principal problema com o bloqueio ocorre quando B tenta adquirir um bloqueio mantido por A. Nesse caso, B é bloqueado para esperar 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 não bloqueadoras 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 pacote 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 rendimento, o que significa maior desempenho do servidor de aplicativos.
Esta definição foi escrita no contexto de Java