¿Podemos usar hashmap en un entorno multiproceso?

¿Podemos usar hashmap en un entorno multiproceso?
¿Podemos usar hashmap en un entorno multiproceso?
Anonim

¿Qué hay de malo al usar HashMap en un entorno de subprocesos múltiples? … Es un problema si varios subprocesos se agregan a la misma instancia de HashMap sin estar sincronizado. Incluso si solo 1 subproceso está modificando un HashMap y otros subprocesos están leyendo desde ese mismo mapa sin sincronización, se encontrará con problemas.

¿Se puede usar un HashMap en un entorno multiproceso?

Debe asegurarse de que: todas las actualizaciones del HashMap se completen antes de que se creen instancias de los subprocesos y el subproceso que crea el mapa también bifurca los subprocesos. Los subprocesos solo usan el HashMap en modo de solo lectura: obtener o iterar sin eliminar. No hay hilos actualizando el mapa.

¿Por qué HashMap no debe usarse en un entorno multihilo? ¿Puede causar un bucle infinito también?

La capacidad predeterminada de HashMap es 16 y el factor de carga es 0,75, lo que significa que HashMap duplicará su capacidad cuando el duodécimo par clave-valor ingrese en el mapa (160,75=12). Cuando 2 subprocesos intentan acceder a HashMap simultáneamente, es posible que encuentre un bucle infinito. El subproceso 1 y el subproceso 2 intentan colocar el duodécimo par clave-valor.

¿HashMap es seguro para subprocesos?

HashMap no está sincronizado. No es seguro para subprocesos y no se puede compartir entre muchos subprocesos sin el código de sincronización adecuado, mientras que Hashtable está sincronizado.

Lo que se adapta mejor a multihilomedio ambiente?

La respuesta es "ConcurrentHashMap"

Recomendado: