Was ist falsch bei der Verwendung von HashMap in einer Multithread-Umgebung? … Es ist ein Problem, wenn mehrere Threads zu derselben HashMap-Instanz hinzufügen, ohne dass sie synchronisiert wird. Selbst wenn nur 1 Thread eine HashMap modifiziert und andere Threads ohne Synchronisierung von derselben Map lesen, werden Sie auf Probleme stoßen.
Können Sie eine HashMap in einer Multithread-Umgebung verwenden?
Sie müssen Folgendes sicherstellen: Alle Aktualisierungen der HashMap sind abgeschlossen, bevor die Threads instanziiert werden, und der Thread, der die Map erstellt, teilt auch die Threads. Die Threads verwenden die HashMap nur im Read-Only-Modus – entweder Get oder Iteration ohne Remove. Es gibt keine Threads zum Aktualisieren der Karte.
Warum HashMap nicht in einer Multithread-Umgebung verwendet werden sollte, kann es auch eine Endlosschleife verursachen?
Die Standardkapazität von HashMap ist 16 und der Ladefaktor ist 0,75, was bedeutet, dass HashMap seine Kapazität verdoppelt, wenn das 12. Schlüssel-Wert-Paar in die Karte eintritt (160,75=12). Wenn 2 Threads gleichzeitig versuchen, auf HashMap zuzugreifen, kann es zu einer Endlosschleife kommen. Thread 1 und Thread 2 versuchen, das 12. Schlüssel-Wert-Paar zu platzieren.
Ist HashMap Get-Thread-sicher?
HashMap ist nicht synchronisiert. Es ist nicht Thread-sicher und kann ohne den richtigen Synchronisationscode nicht von vielen Threads geteilt werden, während Hashtable synchronisiert ist.
Was sich am besten für Multithreading eignetUmgebung?
Antwort ist "ConcurrentHashMap"