Wat is fout om HashMap in multithreaded-omgewing te gebruik? … Dit is 'n probleem as veelvuldige drade by dieselfde HashMap-instansie gevoeg word sonder datdit gesinchroniseer word. Selfs al is net 1 draad besig om 'n HashMap te wysig en ander drade lees van dieselfde kaart af sonder sinchronisasie, sal jy probleme ondervind.
Kan jy 'n HashMap in 'n multithread-omgewing gebruik?
Jy moet seker maak: Al die opdaterings van die HashMap is voltooi voordat die drade geïnstansieer word en die draad wat die kaart skep, vurk ook die drade. Die drade gebruik net die HashMap in leesalleen-modus – óf kry óf herhaling sonder verwydering. Daar is geen drade wat die kaart opdateer nie.
Hoekom HashMap nie in multithreaded omgewing gebruik moet word nie, kan dit ook 'n oneindige lus veroorsaak?
Die verstekkapasiteit van HashMap is 16 en lasfaktor is 0.75, wat beteken dat HashMap sy kapasiteit sal verdubbel wanneer 12de Sleutel-Waarde-paar in die kaart inkom (160.75=12). Wanneer 2 draad gelyktydig toegang tot HashMap probeer kry, dan kan jy oneindige lus teëkom. Draad 1 en Draad 2 probeer om 12de sleutel-waarde-paar te plaas.
Is HashMap-draad veilig?
HashMap is nie-gesinchroniseer. Dit is nie draadveilig en kan nie tussen baie drade gedeel word sonder behoorlike sinchronisasiekode nie, terwyl Hashtable gesinchroniseer is.
Wat is die beste geskik vir multithreadedomgewing?
Antwoord is "ConcurrentHashMap"