Реализация кеша обратной записи в Java - PullRequest
2 голосов
/ 09 ноября 2010

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

Решения

1 Ответ

2 голосов
/ 09 ноября 2010

Вы можете попробовать Guava's Mapmaker .

Пример:

final ConcurrentMap<Long, Integer> cache = new MapMaker()
        .softValues().expiration(20,TimeUnit.MINUTES)
        .makeComputingMap(new Function<Long, Integer>() {
              @Override
            public Integer apply(Long arg0) {
                return null;
            }
            });

SO Вопросы по MapMaker:

Альтернативный вариант:

Используйте класс поставщика memoizeWithExpiration , который также является частью библиотеки гуавы.

...