Sobes.tech
Junior — Middle

Poți oferi exemple de structuri de date colecționabile care asigură siguranța thread-urilor?

sobes.tech AI

Răspuns de la AI

În Java, există mai multe colecții care asigură siguranța în medii multi-thread:

  • Vector — un echivalent thread-safe al ArrayList, toate metodele sunt sincronizate.
  • Hashtable — un echivalent thread-safe al HashMap.
  • Colecții din pachetul java.util.concurrent:
    • ConcurrentHashMap — un tabel hash sigur pentru multi-thread și cu performanță ridicată.
    • CopyOnWriteArrayList — o listă sigură pentru multi-thread, optimă pentru scenarii cu citiri frecvente și modificări rare.
    • BlockingQueue și implementările sale (LinkedBlockingQueue, ArrayBlockingQueue) — cozi sigure pentru multi-thread cu operații de blocare.

Exemplu de utilizare a ConcurrentHashMap:

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

Aceste structuri permit lucrul în siguranță cu colecțiile din mai multe fire de execuție fără sincronizare externă.