У меня есть большая карта = ConcurrentHashMap() в Java, а Key, Value - это какая-то структура объекта. Предположим, что набор ключей этой карты равен keySet.
Теперь у меня есть процедура расчета ниже. Мой вопрос заключается в том, как я могу повысить производительность, не используя блокировку всей карты. Существуют ли какие-либо варианты, такие как использование блокировки для каждого ключа или использование каких-либо других структур данных?
Учитывая, что это большая карта, использование блокировки каждого ключа может быть неприемлемым подходом.
multiThread(): for(0 to N): K = subset(keySet, m) where m is much smaller than keySet.size lock(map) for(key in K): result = func1(map.get(key), result) for(key in K): map.put(key, func2(map.get(key), result)) releaseLock(map)