Middle
Quais estruturas de dados em Java são sincronizadas e quais não são?
sobes.tech IA
Resposta da IA
No Java, algumas estruturas de dados são sincronizadas (seguras para threads), e outras não.
Sincronizadas:
Vector— equivalente sincronizado deArrayList.Hashtable— equivalente sincronizado deHashMap.Stack— herda deVector, portanto também é sincronizado.- Coleções envolvidas através de
Collections.synchronizedList(),synchronizedMap(), etc. - Classes do pacote
java.util.concurrent, por exemplo,ConcurrentHashMap,CopyOnWriteArrayList.
Não sincronizadas:
ArrayListLinkedListHashMapHashSet
Se precisar usar uma coleção não sincronizada em um ambiente multithread, pode envolvê-la numa versão sincronizada usando métodos de Collections ou usar classes especializadas de java.util.concurrent.
Exemplo:
List<String> list = Collections.synchronizedList(new ArrayList<>());