Ar galime naudoti „hashmap“kelių gijų aplinkoje?

Ar galime naudoti „hashmap“kelių gijų aplinkoje?
Ar galime naudoti „hashmap“kelių gijų aplinkoje?
Anonim

Kas negerai naudojant HashMap kelių gijų aplinkoje? … Tai yra problema, jei prie to paties HashMap egzemplioriaus pridedamos kelios gijos, nesinchronizuojant. Net jei tik 1 gija modifikuoja HashMap, o kitos gijos skaito iš to paties žemėlapio be sinchronizavimo, susidursite su problemomis.

Ar galite naudoti HashMap kelių gijų aplinkoje?

Turite įsitikinti, kad: visi „HashMap“naujinimai baigti prieš sukuriant gijas, o gijas, kuri sukuria žemėlapį, taip pat sujungia gijas. Gijos naudoja tik HashMap tik skaitymo režimu – arba gauti, arba iteruoti be pašalinimo. Žemėlapį atnaujinančių gijų nėra.

Kodėl HashMap neturėtų būti naudojamas kelių gijų aplinkoje, ar jis taip pat gali sukelti begalinį ciklą?

Numatytoji HashMap talpa yra 16, o apkrovos koeficientas yra 0,75, o tai reiškia, kad HashMap padvigubins savo talpą, kai į žemėlapį pateks 12-oji rakto ir reikšmės pora (160,75=12). Kai 2 gijos bando pasiekti HashMap vienu metu, galite susidurti su begaliniu ciklu. 1 gijos ir 2 gijos bando įdėti 12-ą rakto-reikšmių porą.

Ar HashMap giją saugu?

HashMap yra nesinchronizuotas. Jis neapsaugotas nuo gijų ir negali būti bendrinamas tarp daugelio gijų be tinkamo sinchronizavimo kodo, o „Hashtable“yra sinchronizuojama.

Kas geriausiai tinka kelių gijųaplinka?

Atsakymas yra „ConcurrentHashMap“

Rekomenduojamas: