Sommario:
Definizione - Cosa significa Atomic?
Atomic è un toolkit di classi di pacchetti java.util.concurrent.atomic variabili, che aiutano a scrivere algoritmi di blocco e di attesa con il linguaggio Java. Un algoritmo che richiede solo thread parziali per un progresso costante è privo di blocchi. In un algoritmo senza attesa, tutti i thread avanzano continuamente, anche in caso di interruzione o ritardo del thread. Gli algoritmi di blocco e di attesa sono noti anche come algoritmi non bloccanti. Gli algoritmi di non blocco vengono utilizzati per la pianificazione di processi e thread a livello di sistema operativo e macchina virtuale Java.
Techopedia spiega Atomic
Tutte le classi di pacchetti java.util.concurrent.atomic hanno il prefisso "atomico" nei loro nomi. Esistono diversi tipi di variabili atomiche disponibili nel pacchetto java.util.concurrent.atomic, tra cui:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
Un esempio è uno scenario in cui il thread A contiene un blocco. A è solo in grado di accedere e apportare modifiche alle variabili protette da questo blocco. Se il thread B contiene questo blocco dopo A, solo B può visualizzare le modifiche di A sulle variabili protette da quel particolare blocco. Il problema principale con il blocco si verifica quando B tenta di acquisire un blocco tenuto da A. In questo caso, B viene bloccato in attesa che il blocco sia disponibile. Gli algoritmi non bloccanti risolvono questo problema.
Lo scopo principale dietro la costruzione di classi atomiche è quello di implementare strutture di dati non bloccanti e le relative classi di infrastruttura. Le classi atomiche non servono come sostituti di java.lang.Integer e delle classi correlate. La maggior parte delle classi di pacchetti java.util.concurrent utilizzano variabili atomiche invece della sincronizzazione, direttamente o indirettamente. Le variabili atomiche vengono inoltre utilizzate per ottenere un throughput più elevato, il che significa maggiori prestazioni del server delle applicazioni.