2016-03-29 14 views
-1

Ich suche nicht nach Unterschieden zwischen verschiedenen Datenstrukturen wie HashMap, Collections.synchronizedMap(Map) oder HashTable. SO ist voller solcher Beiträge.Praktische Anwendungsfälle für ConcurrentHashMap

Ich weiß auch, dass ConcurrentHashMap nicht ConcurrentModificationException für Reader-Thread werfen wird, wenn ein anderer Autor Thread die Karte ändert.

Was ich über praktische Szenarien suchen, wenn ein Leser Thread leisten kann, an veraltete Daten zu arbeiten?
d. H., Thread-1 bekommt zum Zeitpunkt T1 in einem Thread eine Iterator, dann wird zu einem späteren Zeitpunkt T2 ein Element eingefügt, um durch einen anderen Thread-Thread-2 abgebildet zu werden. ConcurrentHashMap sagt, dass Thread-1 nicht garantiert ist, aktualisierte Daten zu sehen, also denke ich, dass es über veraltete Daten iteriert.

Kann mir jemand auf konkrete Probleme hinweisen, wo dies als in Ordnung betrachtet werden könnte? wie bei der Implementierung von Cache, Multi-Thread-Web-Services usw. oder Probleme aus eigener praktischer Erfahrung?

Alle Probleme, die ich vorfand, erforderten immer eine aktualisierte Ansicht der Daten, da das der Zweck war, Daten in eine Karte einzufügen, damit Leser an aktualisierten Daten arbeiten können. Was waren die Probleme, bei denen eine synchronisierte Karte nicht passte? ?

In der Theorie sieht alles gut aus, aber meine Neugier entstand, da ich nie ein solches Szenario in meiner täglichen Arbeit vorfand, wo Leser es sich leisten konnten, auf schalem Blick zu arbeiten.

+1

warum down votes? wegen langer aufschreiben? nur nach unten stimmen und keine Antworten? Meine Frage ergab sich aus der allgemeinen Wahrnehmung, dass "HashMap" durch "ConcurrentHashMap" in einer Multi-Thread-Umgebung ersetzt werden kann, während sie in Wirklichkeit ganz unterschiedliche Anwendungsfälle darstellen. Es gibt Probleme, bei denen 'HashMap' nicht durch' ConcurrentHashMap' ersetzt werden kann, auch nicht in Multi-Threaded-Umgebungen, und ich kenne keine Anwendungsfälle für 'ConcurrentHashMap'. –

+1

Down-Stimmen haben manchmal Lawineneffekt. Stattdessen hätte er ihre Intelligenz beweisen können, indem er jemandem, der in Not ist, antwortet. – user104309

Antwort

1

Im Allgemeinen - es gibt seltene Fälle, in denen Sie keine genauen Daten benötigen und sich dies gleichzeitig nicht leisten können. Ein oft zitiertes Beispiel ist die Anzahl der "Likes", die ein Post hat - egal ob es 2564 oder 2565 ist, aber die "+1" muss ziemlich schnell sein.

+0

Danke, es macht Sinn, da Sie in der nächsten Iteration möglicherweise aktualisierte Likes anzeigen. –

Verwandte Themen