Voimmeko käyttää hashmappia monisäikeisessä ympäristössä?

Voimmeko käyttää hashmappia monisäikeisessä ympäristössä?
Voimmeko käyttää hashmappia monisäikeisessä ympäristössä?
Anonim

Mitä vikaa HashMapin käytössä monisäikeisessä ympäristössä on? … On ongelma, jos samaan HashMap-instanssiin lisätään useita säikeitä ilman, että sitä synkronoidaan. Vaikka vain yksi säie muokkaa HashMapia ja muut säikeet lukevat samasta kartasta ilman synkronointia, kohtaat ongelmia.

Voitko käyttää HashMapia monisäikeisessä ympäristössä?

Sinun on varmistettava, että: Kaikki HashMapin päivitykset on tehty ennen kuin säikeet instantoituvat ja kartan luova säie myös muodostaa säikeet. Säikeet käyttävät vain HashMap vain luku -tilassa – joko hanki tai iterointi ilman poistamista. Karttaa ei ole päivittämässä viestiketjussa.

Miksi HashMapia ei pitäisi käyttää monisäikeisessä ympäristössä, voiko se aiheuttaa myös äärettömän silmukan?

HashMapin oletuskapasiteetti on 16 ja kuormituskerroin on 0,75, mikä tarkoittaa, että HashMap kaksinkertaistaa kapasiteettinsa, kun 12. avainarvopari tulee kartalle (160,75=12). Kun 2 säiettä yrittää käyttää HashMapia samanaikaisesti, saatat kohdata äärettömän silmukan. Säie 1 ja säiet 2 yrittävät asettaa 12. avainarvoparin.

Onko HashMapin ketju turvassa?

HashMap ei ole synkronoitu. Se ei ole säikeille turvallinen eikä sitä voida jakaa useiden säikeiden kesken ilman asianmukaista synkronointikoodia, kun taas Hashtable on synkronoitu.

Mikä sopii parhaiten monisäikeiseenympäristö?

Vastaus on "ConcurrentHashMap"

Suositeltava: