Skocz do zawartości
  • 0

ConcurrentHashMap vs HashMap


JanekMaSkrypta_

Pytanie

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0

@JanekMaSkrypta_ ConcurrentHashMap drobnym kosztem wydajności i pamięciowym wspiera operacje z wielu wątków bez blokowania ich za pomocą atomowych operacji CAS.

Jednak warto zaznaczyć że nie mamy wtedy gwarancji co tak na prawdę zobaczymy w takiej mapie, jeśli w trakcie iteracji po mapie w wątku A zostaje dodana nowa wartość w wątku B to nie ma żadnej pewności czy dodany obiekt też będzie elementem tej iteracji czy nie - zależy czy nowy obiekt wyląduje w przed czy za wskaźnikiem iteratora.
Zazwyczaj nie mamy takiej konieczności by ta wartość tam od razu była, ale czasem jednak jedyne dobre wyjście to synchronizacja HashMapy zamiast użycia concurrent.

Tak samo można taką mapę edytować w trakcie iteracji z tego samego wątku - co w przypadku zwykłej hash mapy wywali błąd CME.

Dodatkowo mapa Concurrent nie wspiera ani kluczy ani wartości nullowych - gdzie w HashMapie można do klucza przypisać wartość null, czy też wartość do klucza o watości null.

Edytowane przez GotoFinal
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...