У меня есть одноэлементный класс, содержащий 3 HashMap. Каждый хэш-файл действует как пул. Я помещаю неиспользуемые записи там. Я столкнулся с исключением модификации параллелизма, поэтому планировал реализовать синхронизацию с ними. Моя проблема в том, что если я использую одну и ту же блокировку для всех из них, возможно, возникнет проблема с производительностью. Потому что, когда я создаю запись для этого пула, это происходит через вызов веб-службы. Поскольку мне нужно, чтобы каждый хэш-файл не запускался одновременно, нормально ли создавать 3 блокировки объектов для них?Различные блокировки для одноэлементного класса
0
A
ответ
2
Я рекомендую вам использовать ConcurrentHashMap.
Таблица внутренне разделена, чтобы попытаться разрешить указанное количество одновременных обновлений без конкуренции.
Постарайтесь настроить производительность с помощью параметра concurrencyLevel.
+1
Тюнинг действительно не должен быть необходим в большинстве случаев @Alexey. Я написал сотни реализаций CHM и никогда не должен был ничего настраивать. – Gray
«нормально ли создавать 3 блокировки объектов для каждого хэш-карты» - не только нормально, но и необходимо. – Fildor
@Fildor Что случилось с единой общей блокировкой? – shmosel
@ EldonHipolito Вы можете использовать фактические объекты карты как блокировки, если хотите. – shmosel