Kas me saame kasutada hashmapi mitme lõimega keskkonnas?

Kas me saame kasutada hashmapi mitme lõimega keskkonnas?
Kas me saame kasutada hashmapi mitme lõimega keskkonnas?
Anonim

Mis viga on HashMapi kasutamisel mitme lõimega keskkonnas? … See on probleem, kui samale HashMapi eksemplarile lisatakse mitu lõime ilma, et seda sünkroonitaks. Isegi kui ainult 1 lõim muudab HashMapi ja teised lõimed loevad sam alt kaardilt ilma sünkroonimiseta, tekib probleeme.

Kas saate HashMapi kasutada mitme lõimega keskkonnas?

Peate veenduma, et kõik HashMapi värskendused on lõpule viidud enne, kui lõimed instantseeritakse ja kaarti loov lõim ühendab ka lõimed. Lõimed kasutavad ainult HashMapi kirjutuskaitstud režiimis – kas hankige või itereerige ilma eemaldamiseta. Kaarti värskendavaid lõime pole.

Miks ei tohiks HashMapi kasutada mitme lõimega keskkonnas, kas see võib samuti põhjustada lõpmatu tsükli?

HashMapi vaikevõimsus on 16 ja koormustegur on 0,75, mis tähendab, et HashMap kahekordistab oma võimsust, kui kaardile siseneb 12. võtme-väärtuse paar (160,75=12). Kui 2 lõime proovib korraga juurde pääseda HashMapile, võib tekkida lõpmatu silmus. Lõim 1 ja lõim 2 proovivad panna 12. võtme-väärtuste paari.

Kas HashMapi lõime saamine on ohutu?

HashMap on sünkroonimata. See ei ole lõimekindel ja seda ei saa ilma õige sünkroonimiskoodita paljude lõimede vahel jagada, samas kui Hashtable on sünkroonitud.

Mis sobib kõige paremini mitmelõimelisekskeskkond?

Vastus on "ConcurrentHashMap"

Soovitan: