Putem folosi hashmap într-un mediu cu mai multe fire?

Cuprins:

Putem folosi hashmap într-un mediu cu mai multe fire?
Putem folosi hashmap într-un mediu cu mai multe fire?
Anonim

Ce este în neregulă cu HashMap în mediul cu mai multe fire? … Este o problemă dacă mai multe fire se adaugă la aceeași instanță HashMap fără casă fie sincronizată. Chiar dacă doar un fir modifică o hartă Hash și alte fire citesc de pe aceeași hartă fără sincronizare, veți întâmpina probleme.

Puteți folosi un HashMap într-un mediu cu mai multe fire?

Trebuie să vă asigurați că: toate actualizările pentru HashMap sunt finalizate înainte ca firele de execuție să fie instanțiate, iar firul de execuție care creează harta, de asemenea, bifurcă firele. Firele folosesc doar HashMap în modul doar citire – fie obțineți, fie repetarea fără eliminare. Nu există subiecte de actualizare a hărții.

De ce HashMap nu ar trebui utilizat în mediul cu mai multe fire poate provoca și o buclă infinită?

Capacitatea implicită a HashMap este 16, iar factorul de încărcare este 0,75, ceea ce înseamnă că HashMap își va dubla capacitatea atunci când a 12-a pereche cheie-valoare intră în hartă (160,75=12). Când 2 fire încearcă să acceseze HashMap simultan, atunci este posibil să întâlniți o buclă infinită. Thread 1 și Thread 2 încearcă să pună a 12-a pereche cheie-valoare.

Este HashMap în siguranță firul?

HashMap este nesincronizat. Nu este sigur pentru fire și nu poate fi partajat între mai multe fire fără un cod de sincronizare adecvat, în timp ce Hashtable este sincronizat.

Ce este cel mai potrivit pentru multithreadedmediu?

Răspunsul este „ConcurrentHashMap”

Recomandat: