Inhaltsverzeichnis:
Definition - Was bedeutet Atomic?
Atomic ist ein Toolkit mit den Paketklassen der Variablen java.util.concurrent.atomic, mit deren Hilfe sperr- und wartefreie Algorithmen in der Java-Sprache geschrieben werden können. Ein Algorithmus, der nur Teil-Threads für einen konstanten Fortschritt benötigt, ist frei von Sperren. In einem wartefreien Algorithmus machen alle Threads einen kontinuierlichen Fortschritt, selbst bei einem Thread-Fehler oder einer Verzögerung. Sperr- und wartefreie Algorithmen werden auch als nicht blockierende Algorithmen bezeichnet. Nicht blockierende Algorithmen werden für die Prozess- und Thread-Planung auf Betriebssystem- und Java Virtual Machine-Ebene verwendet.
Techopedia erklärt Atomic
Alle java.util.concurrent.atomic-Paketklassen haben das Präfix "atomic" im Namen. Im java.util.concurrent.atomic-Paket sind verschiedene Arten von atomaren Variablen verfügbar, darunter:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
Ein Beispiel ist ein Szenario, in dem Thread A eine Sperre enthält. A kann nur auf Variablen zugreifen und Änderungen vornehmen, die durch diese Sperre geschützt sind. Wenn Thread B diese Sperre nach A hält, kann nur B die Änderungen von A für die Variablen anzeigen, die durch diese bestimmte Sperre geschützt sind. Das Hauptproblem beim Sperren tritt auf, wenn B versucht, eine von A gehaltene Sperre abzurufen. In diesem Fall wird B blockiert, um zu warten, bis die Sperre verfügbar ist. Nicht blockierende Algorithmen beheben dieses Problem.
Der Hauptzweck beim Erstellen von Atomklassen besteht darin, nicht blockierende Datenstrukturen und die zugehörigen Infrastrukturklassen zu implementieren. Atomic-Klassen dienen nicht als Ersatz für java.lang.Integer und verwandte Klassen. Die meisten java.util.concurrent-Paketklassen verwenden atomare Variablen anstelle der direkten oder indirekten Synchronisation. Atomvariablen werden auch verwendet, um einen höheren Durchsatz zu erzielen, was eine höhere Anwendungsserverleistung bedeutet.
