Cuprins:
Definiție - Ce înseamnă Atomic?
Atomic este un set de instrumente al claselor variabile de pachete java.util.concurrent.atomic, care ajută la scrierea algoritmilor de blocare și de așteptare cu limbajul Java. Un algoritm care necesită doar fire parțiale pentru un progres constant nu este blocat. Într-un algoritm fără așteptare, toate thread-urile fac progrese continuu, chiar și în cazul eșecului sau întârzierii firului. Algoritmii de blocare și de așteptare sunt cunoscuți și ca algoritmi de neblocare. Algoritmii de deblocare sunt folosiți pentru planificarea procesului și a firului la nivel de sistem de operare și mașini virtuale Java.
Techopedia explică Atomic
Toate clasele de pachete java.util.concurrent.atomic au prefixul „atomic” în numele lor. Există diferite tipuri de variabile atomice disponibile în pachetul java.util.concurrent.atomic, inclusiv:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
Un exemplu este un scenariu în care firul A conține o blocare. A este capabil să acceseze și să facă modificări la variabilele protejate de acest blocaj. Dacă firul B păstrează această blocare după A, atunci numai B poate vizualiza modificările A pe variabilele protejate de blocarea respectivă. Problema principală cu blocarea apare atunci când B încearcă să achiziționeze un blocaj deținut de A. În acest caz, B este blocat să aștepte până când blocarea este disponibilă. Algoritmii de neblocare rezolvă această problemă.
Principalul scop din spatele construirii de clase atomice este implementarea structurilor de date care nu deblochează și a claselor de infrastructură aferente. Clasele atomice nu servesc ca înlocuitori pentru java.lang.Integer și clase conexe. Majoritatea claselor de pachete java.util.concurrent folosesc variabile atomice în loc de sincronizare, direct sau indirect. Variabilele atomice sunt, de asemenea, utilizate pentru a obține un debit mai mare, ceea ce înseamnă o performanță mai mare a serverului de aplicații.
