Col*_*inD 12
这是我用过的一种方式的快速示例MapMaker:
private final ConcurrentMap<Long, Foo> fooCache = new MapMaker()
.softValues()
.makeComputingMap(new Function<Long, Foo>() {
public Foo apply(Long id) {
return getFooFromServer(id);
}
});
public Foo getFoo(Long id) {
return fooCache.get(id);
}
Run Code Online (Sandbox Code Playgroud)
当get(id)被称为地图上,它会要么返回的Foo是在地图的那个ID或者它会从服务器,它缓存检索它,并将其返回.一旦它成立,我就不必考虑它了.另外,因为我已经设置softValues(),缓存可以不填,并导致记忆问题,因为该系统能够从它清除响应内存需求条目.但是,如果从地图中清除了缓存的值,它可以在下次需要时再次询问服务器!
问题是,这只是一种可以使用的方式.选项有地图使用强,弱或软键和/或值,再加上选择有特定的时间量之后删除的条目,让你做很多事情吧.
| 归档时间: |
|
| 查看次数: |
4275 次 |
| 最近记录: |