Sobes.tech
Junior — Middle

Μπορείς να δώσεις παραδείγματα συλλεκτικών δομών δεδομένων που διασφαλίζουν την ασφάλεια των νημάτων;

sobes.tech AI

Απάντηση από AI

Στη Java, υπάρχουν αρκετές συλλογές που διασφαλίζουν την ασφάλεια σε περιβάλλοντα πολλαπλών νημάτων:

  • Vector — ένα thread-safe αντίστοιχο του ArrayList, όλες οι μέθοδοι είναι συγχρονισμένες.
  • Hashtable — ένα thread-safe αντίστοιχο του HashMap.
  • Συλλογές από το πακέτο java.util.concurrent:
    • ConcurrentHashMap — ένας υψηλής απόδοσης, thread-safe πίνακας κατακερματισμού.
    • CopyOnWriteArrayList — μια thread-safe λίστα, ιδανική για σενάρια με συχνές αναγνώσεις και σπάνιες τροποποιήσεις.
    • BlockingQueue και οι υλοποιήσεις της (LinkedBlockingQueue, ArrayBlockingQueue) — ασφαλείς σε πολλαπλά νήματα ουρές με λειτουργίες μπλοκαρίσματος.

Παράδειγμα χρήσης του ConcurrentHashMap:

ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("key", 1);
Integer value = map.get("key");

Αυτές οι δομές επιτρέπουν ασφαλή εργασία με συλλογές από πολλαπλά νήματα χωρίς εξωτερική συγχρονισμό.