Kas ir nepareizi, izmantojot HashMap daudzpavedienu vidē? … Tā ir problēma, ja vienai un tai pašai HashMap instancei tiek pievienoti vairāki pavedieni bez tā sinhronizācijas. Pat ja tikai 1 pavediens modificē HashMap un citi pavedieni lasa no tās pašas kartes bez sinhronizācijas, radīsies problēmas.
Vai varat izmantot HashMap daudzpavedienu vidē?
Jums ir jāpārliecinās: visi HashMap atjauninājumi ir pabeigti, pirms tiek izveidoti pavedieni, un pavediens, kas izveido karti, arī sadala pavedienus. Pavedieni izmanto tikai HashMap tikai lasīšanas režīmā - iegūstiet vai atkārtojiet bez noņemšanas. Nav pavedienu, kas atjauninātu karti.
Kāpēc HashMap nevajadzētu izmantot daudzpavedienu vidē, vai tā var izraisīt arī bezgalīgu cilpu?
HashMap noklusējuma ietilpība ir 16, un slodzes koeficients ir 0,75, kas nozīmē, ka HashMap dubultos ietilpību, kad kartē tiks ievadīts 12. atslēgas vērtību pāris (160,75=12). Kad 2 pavedieni mēģina piekļūt HashMap vienlaicīgi, jūs varat saskarties ar bezgalīgu cilpu. 1. pavediens un 2. pavediens mēģina ievietot 12. atslēgas vērtību pāri.
Vai HashMap pavediens ir drošs?
HashMap nav sinhronizēta. Tas nav drošs pret pavedieniem, un to nevar koplietot starp daudziem pavedieniem bez atbilstoša sinhronizācijas koda, savukārt Hashtable ir sinhronizēts.
Kas ir vislabāk piemērots daudzpavedienuvide?
Atbilde ir "ConcurrentHashMap"