Kan vi bruge hashmap i multithreaded miljø?

Indholdsfortegnelse:

Kan vi bruge hashmap i multithreaded miljø?
Kan vi bruge hashmap i multithreaded miljø?
Anonim

Hvad er der g alt med at bruge HashMap i multithreaded miljø? … Det er et problem, hvis flere tråde føjes til den samme HashMap-instans uden den er synkroniseret. Selvom kun 1 tråd ændrer et HashMap, og andre tråde læser fra det samme kort uden synkronisering, vil du løbe ind i problemer.

Kan du bruge et HashMap i et multithreaded-miljø?

Du skal sikre dig: Alle opdateringer til HashMap er fuldført, før trådene instantieres, og tråden, der skaber kortet, deler også trådene. Trådene bruger kun HashMap i skrivebeskyttet tilstand – enten get eller iteration uden fjernelse. Der er ingen tråde, der opdaterer kortet.

Hvorfor HashMap ikke bør bruges i flertrådede miljøer, kan det også forårsage en uendelig løkke?

Standardkapaciteten for HashMap er 16 og belastningsfaktoren er 0,75, hvilket betyder, at HashMap vil fordoble sin kapacitet, når det 12. nøgle-værdi-par kommer ind på kortet (160,75=12). Når 2 tråde forsøger at få adgang til HashMap samtidigt, kan du støde på uendelig løkke. Tråd 1 og Tråd 2 forsøger at sætte 12. nøgleværdi-par.

Er HashMap-tråden sikker?

HashMap er ikke-synkroniseret. Det er ikke trådsikkert og kan ikke deles mellem mange tråde uden korrekt synkroniseringskode, mens Hashtable er synkroniseret.

Hvad er bedst egnet til flertrådedemiljø?

Svaret er "ConcurrentHashMap"

Anbefalede: