Možemo li koristiti hashmap u višenitnom okruženju?

Možemo li koristiti hashmap u višenitnom okruženju?
Možemo li koristiti hashmap u višenitnom okruženju?
Anonim

Što nije u redu s korištenjem HashMapa u višenitnom okruženju? … Problem je ako se više niti dodaje u istu HashMap instancu bezda se sinkronizira. Čak i ako samo 1 nit mijenja HashMap, a druge niti čitaju s te iste karte bez sinkronizacije, naići ćete na probleme.

Možete li koristiti HashMap u višenitnom okruženju?

Morate biti sigurni: Sva ažuriranja HashMapa su dovršena prije instanciranja niti, a nit koja stvara mapu također račva niti. Niti koriste samo HashMap u načinu samo za čitanje – bilo dobivanje ili iteracija bez uklanjanja. Nema niti koje ažuriraju kartu.

Zašto se HashMap ne bi trebao koristiti u višenitnom okruženju može li uzrokovati i beskonačnu petlju?

Zadani kapacitet HashMapa je 16, a faktor opterećenja je 0,75, što znači da će HashMap udvostručiti svoj kapacitet kada 12. par ključ-vrijednost uđe u kartu (160,75=12). Kada 2 nit pokuša pristupiti HashMapu istovremeno, tada možete naići na beskonačnu petlju. Nit 1 i Nit 2 pokušavaju staviti 12. par ključ/vrijednost.

Je li HashMap siguran niti?

HashMap nije sinkroniziran. Nije siguran za niti i ne može se dijeliti između mnogih niti bez odgovarajućeg koda za sinkronizaciju dok je Hashtable sinkroniziran.

Što je najprikladnije za višenitnuokruženje?

Odgovor je "ConcurrentHashMap"

Preporučeni: