Můžeme použít hashmap ve vícevláknovém prostředí?

Můžeme použít hashmap ve vícevláknovém prostředí?
Můžeme použít hashmap ve vícevláknovém prostředí?
Anonim

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"

Doporučuje: