У меня есть ConcurrentHashMap, который я заполняю из нескольких потоков.
private static Map<DataCode, Long> errorMap = new ConcurrentHashMap<DataCode, Long>();
public static void addError(DataCode error) {
if (errorMap.keySet().contains(error)) {
errorMap.put(error, errorMap.get(error) + 1);
} else {
errorMap.put(error, 1L);
}
}
Мой вышеприведенный метод addError
вызывается из нескольких потоков, которые заполняют errorMap
. Я не уверен, является ли это потокобезопасным? Что-то не так, что я здесь делаю?
Любое объяснение того, почему он может пропускать обновления, поможет мне лучше понять.