Cosa c'è di sbagliato nell'usare HashMap in un ambiente multithread? … È un problema se più thread vengono aggiunti alla stessa istanza HashMap senza sincronizzata. Anche se solo 1 thread sta modificando una HashMap e altri thread stanno leggendo dalla stessa mappa senza sincronizzazione, incontrerai problemi.
Puoi usare una HashMap in un ambiente multithread?
Devi assicurarti: Tutti gli aggiornamenti alla HashMap sono stati completati prima che i thread vengano istanziati e che anche il thread che crea la mappa crei il fork dei thread. I thread usano solo HashMap in modalità di sola lettura – o get o iterazione senza rimozione. Non ci sono discussioni che aggiornano la mappa.
Perché HashMap non dovrebbe essere utilizzato in un ambiente multithread può causare anche un ciclo infinito?
La capacità predefinita di HashMap è 16 e il fattore di carico è 0,75, il che significa che HashMap raddoppierà la sua capacità quando la dodicesima coppia chiave-valore entra nella mappa (160,75=12). Quando 2 thread tentano di accedere a HashMap contemporaneamente, potresti incontrare un loop infinito. Il thread 1 e il thread 2 tentano di inserire la dodicesima coppia chiave-valore.
HashMap è sicuro per i thread?
HashMap non è sincronizzato. Non è thread-safe e non può essere condiviso tra molti thread senza un codice di sincronizzazione appropriato mentre Hashtable è sincronizzato.
Cosa è più adatto al multithreadambiente?
La risposta è "ConcurrentHashMap"