Š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"