Šta nije u redu sa korištenjem HashMap-a 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 modificira HashMap i druge niti čitaju sa te iste mape bez sinhronizacije, naići ćete na probleme.
Možete li koristiti HashMap u višenitnom okruženju?
Morate osigurati: Sva ažuriranja HashMap-a su završena prije nego što se instanciraju niti, a nit koja kreira mapu također račva niti. Niti koriste samo HashMap u modu samo za čitanje – ili get ili iteracija bez uklanjanja. Nema niti za ažuriranje mape.
Zašto se HashMap ne bi trebao koristiti u višenitnom okruženju može li uzrokovati i beskonačnu petlju?
Podrazumevani kapacitet HashMap-a 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 mapu (160,75=12). Kada 2 nit pokuša istovremeno pristupiti HashMap-u, tada možete naići na beskonačnu petlju. Nit 1 i Thread 2 pokušavaju staviti 12. par ključ/vrijednost.
Da li je HashMap siguran niti?
HashMap nije sinkroniziran. Nije siguran nitii ne može se dijeliti između više niti bez odgovarajućeg koda za sinhronizaciju, dok je Hashtable sinhroniziran.
Šta je najprikladnije za višenitnuokruženje?
Odgovor je "ConcurrentHashMap"