我有我從多個線程填充一個ConcurrentHashMap的地圖,如下圖所示:填充從多個線程
private static Map<ErrorData, Long> holder = new ConcurrentHashMap<ErrorData, Long>();
public static void addError(ErrorData error) {
if (holder.keySet().contains(error)) {
holder.put(error, holder.get(error) + 1);
} else {
holder.put(error, 1L);
}
}
有競爭狀態在上面的代碼中的任何可能性,它可以跳過更新?如果可以提供更好的性能,我該如何在這裏使用Guava AtomicLongMap?
我對Java 7中
如果你看到我的例子,我在地圖上也有一個Long值,我爲每個唯一鍵遞增。最後,我打印出這張地圖,並打印出像這樣的'{SomeKey = 3}' – user1950349
@ user1950349,是嗎?這就說得通了;你仍然可以使用AtomicLongMap。 –
@LouisWasserman感謝您的編輯。 –