Czy możemy używać hashmap w środowisku wielowątkowym?

Czy możemy używać hashmap w środowisku wielowątkowym?
Czy możemy używać hashmap w środowisku wielowątkowym?
Anonim

Co jest nie tak podczas korzystania z HashMap w środowisku wielowątkowym? … To jest problem, jeśli wiele wątków jest dodawanych do tej samej instancji HashMap bezjej synchronizacji. Nawet jeśli tylko 1 wątek modyfikuje HashMap, a inne wątki czytają z tej samej mapy bez synchronizacji, napotkasz problemy.

Czy możesz używać HashMap w środowisku wielowątkowym?

Musisz się upewnić: Wszystkie aktualizacje HashMap zostały zakończone zanim wątki zostaną utworzone, a wątek, który tworzy mapę, również rozwidla wątki. Wątki używają HashMap tylko w trybie tylko do odczytu - pobierz lub iterację bez usuwania. Nie ma wątków aktualizujących mapę.

Dlaczego HashMap nie powinien być używany w środowisku wielowątkowym, czy może również powodować nieskończoną pętlę?

Domyślna pojemność HashMap wynosi 16, a współczynnik obciążenia wynosi 0,75, co oznacza, że HashMap podwoi swoją pojemność, gdy 12. para klucz-wartość wejdzie na mapę (160,75=12). Gdy 2 wątki próbują jednocześnie uzyskać dostęp do HashMap, możesz napotkać nieskończoną pętlę. Wątek 1 i Wątek 2 próbują umieścić 12. parę klucz-wartość.

Czy HashMap jest bezpieczny dla wątków?

HashMap nie jest zsynchronizowany. To nie jest bezpieczne dla wątków i nie może być współdzielone przez wiele wątków bez odpowiedniego kodu synchronizacji, podczas gdy Hashtable jest zsynchronizowany.

Co najlepiej nadaje się do wielowątkowościśrodowisko?

Odpowiedź brzmi „ConcurrentHashMap”

Zalecana: