Wat is er mis met HashMap in een multithreaded omgeving? … Het is een probleem als meerdere threads worden toegevoegd aan dezelfde HashMap-instantie zonder dat deze wordt gesynchroniseerd. Zelfs als slechts 1 thread een HashMap aan het wijzigen is en andere threads lezen van dezelfde kaart zonder synchronisatie, zul je problemen tegenkomen.
Kun je een HashMap gebruiken in een omgeving met meerdere threads?
Je moet ervoor zorgen: Alle updates van de HashMap zijn voltooid voordat de threads worden geïnstantieerd en de thread die de kaart maakt, splitst ook de threads. De threads gebruiken alleen de HashMap in de alleen-lezen modus – ofwel ophalen of herhalen zonder verwijderen. Er zijn geen threads die de kaart bijwerken.
Waarom HashMap niet mag worden gebruikt in een multithreaded-omgeving, kan het ook een oneindige lus veroorzaken?
De standaardcapaciteit van HashMap is 16 en de belastingsfactor is 0,75, wat betekent dat HashMap zijn capaciteit zal verdubbelen wanneer het 12e sleutel-waardepaar op de kaart verschijnt (160,75=12). Wanneer 2 threads tegelijkertijd toegang proberen te krijgen tot HashMap, dan kunt u een oneindige lus tegenkomen. Thread 1 en Thread 2 proberen het 12e sleutel-waardepaar te plaatsen.
Is HashMap thread veilig?
HashMap is niet gesynchroniseerd. Het is niet thread-safe en kan niet worden gedeeld tussen veel threads zonder de juiste synchronisatiecode, terwijl Hashtable is gesynchroniseerd.
Wat is het meest geschikt voor multithreadedomgeving?
Antwoord is "ConcurrentHashMap"