用Java实现回写缓存

时间:2010-11-09 05:05:12

标签: java caching soft-references

我尝试实现回写缓存。我正在尝试使用软referenes,但是我在执行post-mortum回写时遇到了麻烦,因为在将引用添加到gcQueue之前清除了引用,因此我无法访问引用对象。

解决方案?

1 个答案:

答案 0 :(得分:2)

您可以尝试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;
            }
            });

关于MapMaker的SO问题:

备选方案:

使用供应商类的memoizeWithExpiration,它也是番石榴库的一部分。