Mi a baj a HashMap használatával többszálú környezetben? … Problémát jelent, ha több szál is hozzáadódik ugyanahhoz a HashMap-példányhoz anélkül, hogy szinkronizálva lenne. Még ha csak 1 szál módosít egy HashMap-et, és más szálak ugyanarról a térképről olvasnak szinkronizálás nélkül, akkor is problémákba ütközhet.
Használhat HashMap-et többszálú környezetben?
Győződjön meg arról, hogy: A HashMap összes frissítése befejeződött, mielőtt a szálak példányosodnának, és a térképet létrehozó szál is elágazná a szálakat. A szálak csak a HashMap-et használják csak olvasható módban – vagy get vagy iterációt eltávolítás nélkül. Nincsenek a térképet frissítő szálak.
Miért nem szabad a HashMap-et használni többszálú környezetben, az is okozhat végtelen ciklust?
A HashMap alapértelmezett kapacitása 16, a terhelési tényező pedig 0,75, ami azt jelenti, hogy a HashMap megduplázza kapacitását, amikor a 12. kulcs-érték pár belép a térképbe (160,75=12). Amikor 2 szál egyszerre próbál hozzáférni a HashMaphez, akkor végtelen ciklusba ütközhet. Az 1. szál és a 2. szál megpróbálja beállítani a 12. kulcs-érték párt.
Biztonságos a HashMap szál?
A HashMap nincs szinkronizálva. Nem szálbiztos, és nem osztható meg sok szál között megfelelő szinkronizálási kód nélkül, míg a Hashtable szinkronizált.
Mi a legalkalmasabb a többszálúhozkörnyezet?
A válasz: "ConcurrentHashMap"