Inhoudsopgave:
Definitie - Wat betekent Atomic?
Atomic is een toolkit van variabele java.util.concurrent.atomic pakketklassen, die helpen bij het schrijven van lock- en wachtvrije algoritmen met de Java-taal. Een algoritme dat alleen gedeeltelijke threads vereist voor constante voortgang is vergrendeld. In een wachtvrij algoritme boeken alle threads continu vooruitgang, zelfs in het geval van threadstoring of vertraging. Vergrendelings- en wachtvrije algoritmen worden ook niet-blokkerende algoritmen genoemd. Niet-blokkerende algoritmen worden gebruikt voor proces- en threadplanning op besturingssysteem- en Java virtual machine-niveau.
Techopedia legt Atomic uit
Alle pakketklassen java.util.concurrent.atomic hebben het voorvoegsel "atomic" in hun naam. Er zijn verschillende soorten atomaire variabelen beschikbaar in het pakket java.util.concurrent.atomic, waaronder:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
Een voorbeeld is een scenario waarin thread A een slot bevat. A heeft alleen toegang tot en wijzigingen in variabelen die door dit slot worden beschermd. Als draad B dit slot vasthoudt na A, kan alleen B de wijzigingen van A bekijken op de variabelen die worden beschermd door dat specifieke slot. Het grootste probleem met vergrendeling treedt op wanneer B probeert een slot te bemachtigen dat in bezit is van A. In dit geval wordt B geblokkeerd om te wachten tot het slot beschikbaar is. Niet-blokkerende algoritmen lossen dit probleem op.
Het hoofddoel van het bouwen van atomaire klassen is het implementeren van niet-blokkerende gegevensstructuren en de bijbehorende infrastructuurklassen. Atoomklassen dienen niet als vervanging voor java.lang.Integer en gerelateerde klassen. De meeste java.util.concurrent pakketklassen gebruiken atomaire variabelen in plaats van synchronisatie, direct of indirect. Atomaire variabelen worden ook gebruikt om een hogere doorvoer te bereiken, wat betekent dat de prestaties van de applicatieserver beter zijn.
