Sobes.tech
Middle

Welke datastructuren in Java zijn gesynchroniseerd en welke niet?

sobes.tech AI

Antwoord van AI

In Java zijn sommige datastructuren gesynchroniseerd (thread-safe), andere niet.

Gesynchroniseerde:

  • Vector — gesynchroniseerd alternatief van ArrayList.
  • Hashtable — gesynchroniseerd alternatief van HashMap.
  • Stack — erft van Vector, dus is ook gesynchroniseerd.
  • Verzamelingen ingepakt via Collections.synchronizedList(), synchronizedMap(), enz.
  • Klassen uit het pakket java.util.concurrent, bijvoorbeeld ConcurrentHashMap, CopyOnWriteArrayList.

Niet gesynchroniseerd:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

Als je een niet-gesynchroniseerde collectie in een multithread-omgeving wilt gebruiken, kun je deze omwikkelen met een gesynchroniseerde versie met behulp van methoden uit Collections of gebruik maken van gespecialiseerde klassen uit java.util.concurrent.

Voorbeeld:

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