Red social para profesionales IT

Ingresar
Java

Java

Dudas, soluciones, alternativas, consejos y todo lo que se te pueda ocurrir respecto al lenguaje Java

  • Blogs
  • Java
  • Sincronización de mapas en Java cuando hay múltiples Hilos (Threads)

Sincronización de mapas en Java cuando hay múltiples Hilos (Threads)


Cuando una aplicación no está pensada para trabajar concurrentemente, no es complejo el manejo de las estructuras que Java provee.

En el momento que se comienza a trabajar con hilos concurrentes (múltiples threads) es muy importante conocer en profundidad el funcionamiento interno de las clases del framework.
En particular para los mapas tipo hash (HashMaps), deben estar atentos a sincronizarlos externamente si varios hilos acceden simultáneamente y al menos uno de los estos hilos modifica estructuralmente el mapa.
Cabe aclarar que una modificación estructural es cualquier operación que agrega o borra una o más asignaciones (clave), si se cambia el valor asociado a una clave que ya contiene una instancia no es una modificación estructural.

Algo a tener en cuenta también es que si este mapa es accedido muchas veces, el rendimiento (performance) de la aplicación puede caer considerablemente cuando hay varios hilos haciendo put o get sobre el mismo.

De la documentación de Java para la clase HashMap:

Note that this implementation is not synchronized. If multiple threads access this map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more mappings; merely changing the value associated with a key that an instance already contains is not a structural modification.)