我尝试实现回写缓存。我正在尝试使用软referenes,但是我在执行post-mortum回写时遇到了麻烦,因为在将引用添加到gcQueue之前清除了引用,因此我无法访问引用对象。
解决方案?
答案 0 :(得分:2)
示例:
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;
}
});
关于MapMaker的SO问题:
备选方案:
使用供应商类的memoizeWithExpiration,它也是番石榴库的一部分。