Môžeme použiť hashmap vo viacvláknovom prostredí?

Obsah:

Môžeme použiť hashmap vo viacvláknovom prostredí?
Môžeme použiť hashmap vo viacvláknovom prostredí?
Anonim

Čo je zlé pri používaní HashMap vo viacvláknovom prostredí? … Je problém, ak sa do tej istej inštancie HashMap pridáva viacero vlákien bez toho, abybola synchronizovaná. Aj keď len jedno vlákno upravuje HashMap a ďalšie vlákna čítajú z tej istej mapy bez synchronizácie, narazíte na problémy.

Môžete použiť HashMap v prostredí s viacerými vláknami?

Musíte sa uistiť: Všetky aktualizácie HashMap sú dokončené skôr, ako sa vytvorí inštancia vlákien a vlákno, ktoré vytvára mapu, tiež rozdelí vlákna. Vlákna používajú HashMap iba v režime iba na čítanie – buď získať alebo opakovať bez odstránenia. Mapu neaktualizujú žiadne vlákna.

Prečo by sa HashMap nemal používať vo viacvláknovom prostredí, môže to tiež spôsobiť nekonečnú slučku?

Predvolená kapacita HashMap je 16 a faktor zaťaženia je 0,75, čo znamená, že HashMap zdvojnásobí svoju kapacitu, keď do mapy vstúpi 12. pár kľúč – hodnota (160,75=12). Keď sa 2 vlákna pokúsia o prístup k HashMap súčasne, môžete naraziť na nekonečnú slučku. Vlákno 1 a Vlákno 2 sa pokúšajú vložiť 12. pár kľúč – hodnota.

Je HashMap get thread bezpečný?

HashMap nie je synchronizovaná. Nie je bezpečný pre vlákna a nemôže byť zdieľaný medzi mnohými vláknami bez správneho synchronizačného kódu, zatiaľ čo Hashtable je synchronizovaný.

Čo je najvhodnejšie pre viacvláknovéprostredie?

Odpoveď je "ConcurrentHashMap"

Odporúča: