時間のかかる計算結果に頻繁にアクセスする必要があります。結果はめったに変更されないので、時々データを再計算する必要がありますが、しばらくの間、古い結果を使用しても問題ありません。これを行う最も簡単な方法は何でしょうか。既存のライブラリメソッドまたはデザインパターンはありますか?
私は次のようなことを考えています
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
適切な実装は簡単ではないかもしれません。スレッドセーフや競合状態などに対処する必要があるかもしれません。そのため、ここで自分で実装するよりも、実績のある実装を使用したいと思います。