Πίνακας περιεχομένων:
Ορισμός - Τι σημαίνει Atomic;
Το Atomic είναι μια εργαλειοθήκη των μεταβλητών κλάσεων πακέτων java.util.concurrent.atomic, τα οποία βοηθούν στο γράψιμο αλγορίθμων κλειδώματος και αναμονής χωρίς αναμονή με τη γλώσσα Java. Ένας αλγόριθμος που απαιτεί μόνο μερικά σπειρώματα για συνεχή πρόοδο δεν είναι κλειδωμένος. Σε έναν αλγόριθμο χωρίς αναμονή, όλα τα νήματα προχωρούν συνεχώς, ακόμα και σε περιπτώσεις βλάβης ή καθυστέρησης νήματος. Οι αλγόριθμοι κλειδώματος και αναμονής είναι επίσης γνωστοί ως αλγόριθμοι μη αποκλεισμού. Οι αλγόριθμοι μη αποκλεισμού χρησιμοποιούνται για τον προγραμματισμό διαδικασιών και κλωστών στο επίπεδο του λειτουργικού συστήματος και των εικονικών μηχανών Java.
Η Techopedia εξηγεί την Atomic
Όλες οι κλάσεις πακέτων java.util.concurrent.atomic έχουν το "ατομικό" πρόθεμα στα ονόματά τους. Υπάρχουν διάφοροι τύποι ατομικών μεταβλητών που είναι διαθέσιμοι στο πακέτο java.util.concurrent.atomic, όπως:
- AtomicBoolean
- AtomicInteger
- AtomicIntegerArray
- AtomicIntegerFieldUpdater
- AtomicLong
- AtomicLongArray
- AtomicLongFieldUpdater
- AtomicReference
Ένα παράδειγμα είναι ένα σενάριο όπου το νήμα Α κρατά κλειδαριά. A είναι μόνο σε θέση να έχει πρόσβαση και να κάνει αλλαγές στις μεταβλητές που προστατεύονται από αυτήν την κλειδαριά. Εάν το νήμα Β κρατά αυτή την κλειδαριά μετά το Α, τότε μόνο το Β μπορεί να δει τις αλλαγές του Α στις μεταβλητές που προστατεύονται από την συγκεκριμένη κλειδαριά. Το κύριο πρόβλημα με το κλείδωμα εμφανίζεται όταν το B προσπαθεί να αποκτήσει μια κλειδαριά που κρατείται από την Α. Σε αυτή την περίπτωση, το B εμποδίζεται να περιμένει μέχρι να είναι διαθέσιμη η κλειδαριά. Οι αλγόριθμοι μη αποκλεισμού επιλύουν αυτό το πρόβλημα.
Ο κύριος σκοπός πίσω από την κατασκευή ατομικών τάξεων είναι η υλοποίηση δομών δεδομένων μη μπλοκαρίσματος και οι σχετικές κατηγορίες υποδομής. Οι ατομικές τάξεις δεν χρησιμεύουν ως αντικαταστάσεις για το java.lang.Integer και τις σχετικές τάξεις. Οι περισσότερες κλάσεις πακέτων java.util.concurrent χρησιμοποιούν ατομικές μεταβλητές αντί για συγχρονισμό, είτε άμεσα είτε έμμεσα. Οι ατομικές μεταβλητές χρησιμοποιούνται επίσης για την επίτευξη υψηλότερης απόδοσης, πράγμα που σημαίνει υψηλότερη απόδοση διακομιστή εφαρμογών.