Σε αυτό το σεμινάριο, θα μάθουμε για τη διεπαφή Java ConcurrentMap και τις μεθόδους της.
Η ConcurrentMap
διεπαφή του πλαισίου συλλογών Java παρέχει έναν χάρτη ασφαλούς νήματος. Δηλαδή, πολλά νήματα μπορούν να έχουν πρόσβαση στον χάρτη ταυτόχρονα χωρίς να επηρεάζουν τη συνέπεια των καταχωρήσεων σε έναν χάρτη.
ConcurrentMap
είναι γνωστός ως συγχρονισμένος χάρτης.
Επεκτείνει τη διασύνδεση χάρτη.
Τάξη που εφαρμόζει το ConcurrentMap
Δεδομένου ότι ConcurrentMap
είναι μια διεπαφή, δεν μπορούμε να δημιουργήσουμε αντικείμενα από αυτήν.
Για να χρησιμοποιήσουμε τις λειτουργίες της ConcurrentMap
διεπαφής, πρέπει να χρησιμοποιήσουμε την κλάση ConcurrentHashMap
που την εφαρμόζει.
Πώς να χρησιμοποιήσετε το ConcurrentMap;
Για να χρησιμοποιήσουμε το ConcurrentMap
, πρέπει java.util.concurrent.ConcurrentMap
πρώτα να εισαγάγουμε το πακέτο. Μόλις εισαγάγουμε το πακέτο, δείτε πώς μπορούμε να δημιουργήσουμε έναν ταυτόχρονο χάρτη.
// ConcurrentMap implementation by ConcurrentHashMap CocurrentMap numbers = new ConcurrentHashMap();
Στον παραπάνω κώδικα, δημιουργήσαμε έναν ταυτόχρονο χάρτη με όνομα.
Εδώ,
- Κλειδί - ένα μοναδικό αναγνωριστικό που χρησιμοποιείται για τη συσχέτιση κάθε στοιχείου (τιμή) σε έναν χάρτη
- Τιμή - στοιχεία που σχετίζονται με κλειδιά σε έναν χάρτη
Μέθοδοι ταυτόχρονης χαρτογράφησης
Η ConcurrentMap
διεπαφή περιλαμβάνει όλες τις μεθόδους της Map
διεπαφής. Είναι επειδή Map
είναι το σούπερ περιβάλλον της ConcurrentMap
διεπαφής.
Εκτός από όλες αυτές τις μεθόδους, εδώ είναι οι συγκεκριμένες μέθοδοι για τη ConcurrentMap
διεπαφή.
- putIfAbsent () - Εισάγει το καθορισμένο κλειδί / τιμή στο χάρτη εάν το καθορισμένο κλειδί δεν έχει ήδη συσχετιστεί με καμία τιμή.
- compute () - Υπολογίζει μια καταχώριση (αντιστοίχιση κλειδιού / τιμής) για το καθορισμένο κλειδί και την τιμή που είχε αντιστοιχιστεί προηγουμένως
- computeIfAbsent () - Υπολογίζει μια τιμή χρησιμοποιώντας την καθορισμένη συνάρτηση για το καθορισμένο κλειδί, εάν το κλειδί δεν έχει ήδη αντιστοιχιστεί με καμία τιμή.
- computeIfPresent () - Υπολογίζει μια νέα καταχώριση (αντιστοίχιση κλειδιού / τιμής) για το καθορισμένο κλειδί εάν το κλειδί έχει ήδη αντιστοιχιστεί με την καθορισμένη τιμή.
- forEach () - Πρόσβαση σε όλες τις καταχωρίσεις ενός χάρτη και εκτέλεση των καθορισμένων ενεργειών.
- συγχώνευση () - Συγχωνεύει τη νέα καθορισμένη τιμή με την παλιά τιμή του καθορισμένου κλειδιού, εάν το κλειδί έχει ήδη αντιστοιχιστεί σε μια συγκεκριμένη τιμή. Εάν το κλειδί δεν έχει ήδη αντιστοιχιστεί, η μέθοδος απλώς συσχετίζει την καθορισμένη τιμή με το κλειδί μας.
Για να μάθετε περισσότερα, επισκεφθείτε το Java ConcurrentMap (επίσημη τεκμηρίωση Java).
Υλοποίηση του ConcurrentMap στο ConcurrentHashMap
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentHashMap; class Main ( public static void main(String() args) ( // Creating ConcurrentMap using ConcurrentHashMap ConcurrentMap numbers = new ConcurrentHashMap(); // Insert elements to map numbers.put("Two", 2); numbers.put("One", 1); numbers.put("Three", 3); System.out.println("ConcurrentMap: " + numbers); // Access the value of specified key int value = numbers.get("One"); System.out.println("Accessed Value: " + value); // Remove the value of specified key int removedValue = numbers.remove("Two"); System.out.println("Removed Value: " + removedValue); ) )
Παραγωγή
ConcurrentMap: (One = 1, Two = 2, Three = 3) Accessed Value: 1 Αφαιρούμενη τιμή: 2
Για να μάθετε περισσότερα ConcurrentHashMap
, επισκεφθείτε το Java ConcurrentHashMap.