Sobes.tech
Junior — Middle

Tudnál példákat adni olyan gyűjteményes adatstruktúrákra, amelyek biztosítják a szálbiztonságot?

sobes.tech MI

Válasz az MI-től

Java-ban több olyan gyűjtemény is létezik, amelyek biztosítják a szálbiztonságot:

  • Vector — a ArrayList szálbiztos megfelelője, minden metódusa szinkronizált.
  • Hashtable — a HashMap szálbiztos megfelelője.
  • A java.util.concurrent csomag gyűjteményei:
    • ConcurrentHashMap — magas teljesítményű, szálbiztos hash-tábla.
    • CopyOnWriteArrayList — szálbiztos lista, ideális gyakori olvasási és ritka módosítási forgatókönyvekhez.
    • BlockingQueue és implementációi (LinkedBlockingQueue, ArrayBlockingQueue) — szálbiztos sorok blokkoló műveletekkel.

A ConcurrentHashMap használatának példája:

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

Ezek a struktúrák lehetővé teszik, hogy biztonságosan dolgozzunk több szálról érkező gyűjteményekkel külső szinkronizáció nélkül.