2010-11-09 2 views
2

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

Решения?

ответ

2

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

Пример:

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 поставщика, который также является частью библиотеки guava.

+1

Я действительно не вижу, как это помогает с обратной записью. – maaartinus

Смежные вопросы