Sobes.tech
Junior — Middle

Můžeš uvést příklady kolekčních datových struktur zajišťujících bezpečnost vláken?

sobes.tech AI

Odpověď od AI

V Javě existuje několik kolekcí, které zajišťují bezpečnost při práci s více vlákny:

  • Vector — vlákno-bezpečný ekvivalent ArrayList, všechny metody jsou synchronizované.
  • Hashtable — vlákno-bezpečný ekvivalent HashMap.
  • Kolekce z balíčku java.util.concurrent:
    • ConcurrentHashMap — vysoce výkonná, vlákno-bezpečná hash tabulka.
    • CopyOnWriteArrayList — vlákno-bezpečný seznam, ideální pro scénáře s častým čtením a vzácnými změnami.
    • BlockingQueue a její implementace (LinkedBlockingQueue, ArrayBlockingQueue) — vlákno-bezpečné fronty s blokujícími operacemi.

Příklad použití ConcurrentHashMap:

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

Tyto struktury umožňují bezpečně pracovat s kolekcemi z více vláken bez nutnosti externí synchronizace.