ich die gleichzeitige Hash-Karte hält einige Ergebnisse verwenden möchten,ConcurrentHashMap Update existiert Wert Thread-sicher
ConcurrentHashMap<Long,AtomicInteger>
einen neuen Eintrag hinzufügen, wenn Schlüssel nicht vorhanden ist, oder der Wert von Schlüssel und Zuwachs erhalten, wie folgt aus:
if(map.contains(key))
map.get(key).addAndGet(1);
else
map.put(key,new AtomicInteger(1));
die Put-Operation ist nicht thead sicher, wie dieses Problem zu lösen? Ist der Put-Vorgang innerhalb eines synchronisierten Blocks?
Es ist nicht nur die Put-Operation - der gesamte angezeigte bedingte Block müsste in einem synchronisierten Block liegen. Alternativ können Sie 'putIfAbsent' verwenden. –
Die Verwendung des PutIfAbsent scheint einfacher. Ich habe den doppelten Check in synchronisierten Block verwendet, anstatt den gesamten bedingten Block zu verwenden. – raymond