Мне нужна карта со следующими требованиями:
-
Он должен быть очень параллельным. Методы
put()
,get()
иremove()
могут вызываться одновременно несколькими потоками. -
Он должен иметь фиксированный размер. Если размер
HashMap
достигает максимального значения (например, 10000), добавление новой записи на карту не допускается. Он НЕ МОЖЕТ быть кешем LRU, где самая старая запись удаляется при достижении максимального размера.
ConcurrentHashMap
может удовлетворять # 1. Но не уверен, как № 2 можно реализовать поверх ConcurrentHashMap
без воздействия на concurrency (добавление настраиваемого метода put()
, который добавит карту только тогда, когда размер меньше максимального размера, должен быть "synchronized", что приведет к поражению цели использования параллельного HashMap
).
Пожалуйста, дайте мне знать ваши мысли.