Tartalomjegyzék:
Meghatározás - Mit jelent az atom?
Az Atomic a java.util.concurrent.atomic változó csomagosztályok eszközkészlete, amelyek elősegítik a zárolási és várakozási nélküli algoritmusok írását a Java nyelven. Az algoritmus, amely csak részleges szálakat igényel az állandó haladáshoz, zárolásmentes. Várakozás nélküli algoritmusban az összes szál folyamatosan halad előre, még a szál meghibásodása vagy késése esetén is. A zárolási és várakozási nélküli algoritmusokat blokkolás nélküli algoritmusoknak is nevezik. A nem blokkoló algoritmusokat a folyamat- és szálütemezéshez használják az operációs rendszer és a Java virtuális gép szintjén.
A Techopedia magyarázza az Atomicot
Az összes java.util.concurrent.atomic csomagosztály neve "atom" előtaggal rendelkezik. A java.util.concurrent.atomic csomagban különféle típusú atomváltozók érhetők el, ideértve a következőket:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
Példa egy forgatókönyv, ahol az A szál zárral rendelkezik. Az A csak az ezzel a zárral védett változók elérésére és módosítására képes. Ha a B szál ezt a zárat tartja A után, akkor csak B láthatja az A változásait az adott zárral védett változóknál. A reteszeléssel kapcsolatos fő probléma akkor fordul elő, amikor B megkísérli megszerezni az A kezében lévő reteszt. Ebben az esetben a B blokkolva van, hogy várjon, amíg a retesz rendelkezésre áll. A nem blokkoló algoritmusok megoldják ezt a problémát.
Az atomosztályok építésének fő célja a nem blokkoló adatszerkezetek és a hozzájuk kapcsolódó infrastruktúra osztályok megvalósítása. Az atomi osztályok nem helyettesítik a java.lang.Integer és a kapcsolódó osztályokat. A legtöbb java.util.concurrent csomagosztály közvetlenül vagy közvetetten szinkronizálás helyett atomváltozókat használ. Atomi változókat is használnak a nagyobb átviteli sebesség elérésére, ami magasabb alkalmazáskiszolgáló teljesítményt jelent.






