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 vanArrayList.Hashtable— gesynchroniseerd alternatief vanHashMap.Stack— erft vanVector, dus is ook gesynchroniseerd.- Verzamelingen ingepakt via
Collections.synchronizedList(),synchronizedMap(), enz. - Klassen uit het pakket
java.util.concurrent, bijvoorbeeldConcurrentHashMap,CopyOnWriteArrayList.
Niet gesynchroniseerd:
ArrayListLinkedListHashMapHashSet
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<>());