Č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"