Nini mbaya kutumia HashMap katika mazingira yenye nyuzi nyingi? … Ni tatizo ikiwa nyuzi nyingi zinaongezwa kwa mfano sawa wa HashMap bila kusawazishwa. Hata kama thread 1 tu inarekebisha HashMap na nyuzi nyingine zinasoma kutoka kwenye ramani hiyo hiyo bila kusawazisha, utakumbana na matatizo.
Je, unaweza kutumia HashMap katika mazingira yenye nyuzi nyingi?
Lazima uhakikishe: Masasisho yote kwenye HashMap yamekamilika kabla ya minyororo kuthibitishwa na uzi unaounda ramani pia huunda nyuzi. Mazungumzo yanatumia tu HashMap katika hali ya kusoma tu - ama pata au kurudia bila kuondoa. Hakuna nyuzi zinazosasisha ramani.
Kwa nini HashMap isitumike katika mazingira yenye nyuzi nyingi inaweza kusababisha kitanzi kisicho na kikomo pia?
Nafasi chaguomsingi ya HashMap ni 16 na Load factor ni 0.75, kumaanisha kuwa HashMap itaongeza uwezo wake maradufu jozi ya 12 ya Thamani-Muhimu inapoingia kwenye ramani (160.75=12). Wakati nyuzi 2 zinapojaribu kufikia HashMap kwa wakati mmoja, basi unaweza kukutana na kitanzi kisicho na kikomo. Thread 1 na Thread 2 inajaribu kuweka 12th key-value jozi.
Je, HashMap inapata mazungumzo salama?
HashMap haijasawazishwa. Si salama kwa uzi na haiwezi kushirikiwa kati ya nyuzi nyingi bila msimbo ufaao wa ulandanishi ilhali Hashtable imesawazishwa.
Nini inayofaa zaidi kwa njia nyingimazingira?
Jibu ni "ConcurrentHashMap"