Sobes.tech
Middle

¿Qué estructuras de datos en Java están sincronizadas y cuáles no?

sobes.tech AI

Respuesta de la IA

En Java, algunas estructuras de datos son sincronizadas (seguras para hilos), y otras no.

Sincronizadas:

  • Vector — equivalente sincronizado de ArrayList.
  • Hashtable — equivalente sincronizado de HashMap.
  • Stack — hereda de Vector, por lo tanto también es sincronizado.
  • Colecciones envueltas mediante Collections.synchronizedList(), synchronizedMap(), etc.
  • Clases del paquete java.util.concurrent, por ejemplo, ConcurrentHashMap, CopyOnWriteArrayList.

No sincronizadas:

  • ArrayList
  • LinkedList
  • HashMap
  • HashSet

Si necesitas usar una colección no sincronizada en un entorno multihilo, puedes envolverla en una sincronizada usando métodos de Collections o usar clases especializadas de java.util.concurrent.

Ejemplo:

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