Middle
Jakie struktury danych w Java są synchronizowane, a które nie?
sobes.tech AI
Odpowiedź od AI
W Javie niektóre struktury danych są synchronizowane (bezpieczne dla wątków), a inne nie.
Synchronizowane:
Vector— synchronizowany odpowiednikArrayList.Hashtable— synchronizowany odpowiednikHashMap.Stack— dziedziczy poVector, więc jest również synchronizowany.- Kolekcje opakowane przez
Collections.synchronizedList(),synchronizedMap()itp. - Klasy z pakietu
java.util.concurrent, np.ConcurrentHashMap,CopyOnWriteArrayList.
Niesynchronizowane:
ArrayListLinkedListHashMapHashSet
Jeśli chcesz użyć niesynchronizowanej kolekcji w środowisku wielowątkowym, możesz ją opakować w synchronizowaną za pomocą metod z Collections lub użyć specjalistycznych klas z java.util.concurrent.
Przykład:
List<String> list = Collections.synchronizedList(new ArrayList<>());