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