Многопоточный Java-кеш для объектов, которые тяжело создавать? - PullRequest
3 голосов
/ 05 мая 2010

Мне нужно кэшировать некоторые объекты с довольно большим временем создания, и мне нужна семантика создания точно один раз. Должна быть возможность создавать объекты для разных CacheKeys одновременно. Я думаю, что мне нужно что-то, что (под капотом) делает что-то вроде этого:

ConcurrentHashMap<CacheKey, Future<HeavyObject>>

Существуют ли какие-либо реализации с открытым исходным кодом, которые я могу использовать повторно?

Ответы [ 2 ]

3 голосов
/ 05 мая 2010

Вы смотрели на гуаву MapMaker класс? Я думаю, что он будет делать все, что вам нужно - хотя вместо предоставления Future вы даете классу Function<? super K, ? extends V>, который используется для вычисления значения.

Оглядываясь назад на ваше сообщение, если вам действительно нужно поместить туда значения , а не вычислять их, это тоже не сработает - но я оставлю это предложение на случай, если вычислительная карта хорошо для тебя.

0 голосов
/ 05 мая 2010

Если вам нужен продвинутый Java-кеш, взгляните на Ehcache или JBoss Cache.

Я использовал второй, и хотя он не разработан (усилия направлены на новый проект Infinispan), он работает хорошо. Вы можете использовать кеш-загрузчики для пользовательской логики объект-кеш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...