Podem utilitzar el mapa hash en un entorn multiprocés?

Taula de continguts:

Podem utilitzar el mapa hash en un entorn multiprocés?
Podem utilitzar el mapa hash en un entorn multiprocés?
Anonim

Què passa amb HashMap en un entorn multiprocés? … És un problema si s'afegeixen diversos fils a la mateixa instància de HashMap sense queestigui sincronitzat. Fins i tot si només 1 fil està modificant un HashMap i altres fils estan llegint el mateix mapa sense sincronització, trobareu problemes.

Podeu utilitzar un HashMap en un entorn multiprocés?

Has d'assegurar-te que: totes les actualitzacions de HashMap s'hagin completat abans que s'instanciïn els fils i el fil que crea el mapa també els bifurca. Els fils només utilitzen el HashMap en mode de només lectura: obtenir o repetir sense eliminar. No hi ha cap fil per actualitzar el mapa.

Per què HashMap no s'ha d'utilitzar en entorns multifils, també pot provocar un bucle infinit?

La capacitat predeterminada de HashMap és 16 i el factor de càrrega és de 0,75, la qual cosa significa que HashMap duplicarà la seva capacitat quan entri el 12è parell clau-valor al mapa (160,75=12). Quan 2 fils intenten accedir a HashMap simultàniament, és possible que trobeu un bucle infinit. El fil 1 i el fil 2 intenten posar el 12è parell clau-valor.

HashMap està segur del fil?

HashMap no està sincronitzat. No és segur per a fils i no es pot compartir entre molts fils sense el codi de sincronització adequat, mentre que Hashtable està sincronitzat.

El que s'adapta millor a multiprocésmedi ambient?

La resposta és "ConcurrentHashMap"

Recomanat: