Sobes.tech
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 de ArrayList.
  • Hashtable — equivalente sincronizado de HashMap.
  • Stack — herda de Vector, 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:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

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<>());