Sobes.tech
Junior — Middle

Czy możesz podać przykłady kolekcjonowalnych struktur danych zapewniających bezpieczeństwo wątków?

sobes.tech AI

Odpowiedź od AI

W Javie istnieje kilka kolekcji zapewniających bezpieczeństwo wątkowe:

  • Vector — bezpieczny wątkowo odpowiednik ArrayList, wszystkie metody są synchronizowane.
  • Hashtable — bezpieczny wątkowo odpowiednik HashMap.
  • Kolekcje z pakietu java.util.concurrent:
    • ConcurrentHashMap — wysokowydajna, bezpieczna wątkowo tabela haszująca.
    • CopyOnWriteArrayList — bezpieczna wątkowo lista, optymalna dla scenariuszy z częstym odczytem i rzadkimi modyfikacjami.
    • BlockingQueue i jej implementacje (LinkedBlockingQueue, ArrayBlockingQueue) — bezpieczne wątkowo kolejki z operacjami blokującymi.

Przykład użycia ConcurrentHashMap:

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

Te struktury pozwalają bezpiecznie pracować z kolekcjami z wielu wątków bez konieczności zewnętrznej synchronizacji.