У меня есть ConcurrentHashMap, где я делаю следующее:
sequences = new ConcurrentHashMap<Class<?>, AtomicLong>();
if(!sequences.containsKey(table)) {
synchronized (sequences) {
if(!sequences.containsKey(table))
initializeHashMapKeyValue(table);
}
}
Мой вопрос - нет необходимости делать дополнительные
if(!sequences.containsKey(table))
Проверьте внутри синхронизированного блока, чтобы другие потоки не инициализировали одно и то же значение hashmap?
Может быть, проверка нужна, и я делаю это неправильно? Мне кажется немного глупо, что я делаю, но я думаю, что это необходимо.