我需要经常访问耗时计算的结果。结果不经常变化,所以我不得不时不时地重新计算数据,但暂时使用过时的结果是可以的。最简单的方法是什么?是否有现有的库方法或设计模式?
我在想类似的东西
private static List myCachedList = null;
...
// refresh list once in 3600 seconds
if (needsRefresh(myCachedList, 3600)) {
// run the calculation
myCachedList = ...
}
// use either updated or previous value from here on
一个正确的实现可能不是微不足道的,它可能必须处理线程安全、竞争条件等,所以我宁愿使用一个经过验证的实现而不是在这里推出我自己的实现。