Sobes.tech
Middle

Které datové struktury v Java jsou synchronizované a které nejsou?

sobes.tech AI

Odpověď od AI

V Javě jsou některé datové struktury synchronizované (vlákno-bezpečné), jiné ne.

Synchronizované:

  • Vector — synchronizovaný ekvivalent ArrayList.
  • Hashtable — synchronizovaný ekvivalent HashMap.
  • Stack — dědí z Vector, takže je také synchronizovaný.
  • Kolekce obalené pomocí Collections.synchronizedList(), synchronizedMap() atd.
  • Třídy z balíčku java.util.concurrent, například ConcurrentHashMap, CopyOnWriteArrayList.

Nesynchronizované:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

Pokud potřebujete použít nesynchronizovanou kolekci v prostředí s více vlákny, můžete ji obalit do synchronizované pomocí metod z Collections nebo použít specializované třídy z java.util.concurrent.

Příklad:

List<String> list = Collections.synchronizedList(new ArrayList<>());