Co je špatného při používání HashMap ve vícevláknovém prostředí? … Je problém, pokud se do stejné instance HashMap přidává více vláken, aniž by byla synchronizována. I když jen 1 vlákno upravuje HashMap a další vlákna čtou ze stejné mapy bez synchronizace, narazíte na problémy.
Můžete použít HashMap ve vícevláknovém prostředí?
Musíte se ujistit: Všechny aktualizace HashMap jsou dokončeny před vytvořením instance vláken a vlákno, které vytváří mapu, také rozvětví vlákna. Vlákna používají HashMap pouze v režimu pouze pro čtení – buď získat, nebo opakovat bez odstranění. Neexistují žádná vlákna aktualizující mapu.
Proč by HashMap neměl být používán ve vícevláknovém prostředí, může také způsobit nekonečnou smyčku?
Výchozí kapacita HashMap je 16 a faktor zatížení je 0,75, což znamená, že HashMap zdvojnásobí svou kapacitu, když do mapy vstoupí 12. pár klíč-hodnota (160,75=12). Když se 2 vlákna pokusí o přístup k HashMap současně, můžete narazit na nekonečnou smyčku. Vlákno 1 a vlákno 2 se pokusí vložit 12. pár klíč–hodnota.
Je HashMap get thread bezpečný?
HashMap není synchronizován. Není bezpečný pro vlákna a nelze jej sdílet mezi mnoha vlákny bez správného synchronizačního kódu, zatímco Hashtable je synchronizován.
Co se nejlépe hodí pro vícevláknovéprostředí?
Odpověď je "ConcurrentHashMap"