私の質問は多少キャッシングに関連しています。いくつかのスレッドが2秒ごとに情報にアクセスしていて、3分ごとにデータベースに更新されているとします。これらのスレッドによって取得された情報のハッシュマップを作成し、3分ごとに更新し、すべてのスレッドがハッシュマップからデータを取得している。私の質問は、「3分後にハッシュマップが他のスレッドによって更新され、常にスレッドが最新の情報を取得するようにするにはどうすればよいでしょうか」という質問です。与えられた時刻にスレッドを実行する
1)データを保護ロックを取得:
正確に3分を指定し、最新の情報を持っています。これは達成するのは難しいでしょう。正確に3分後にチェックするスレッドを持っていると想像してください。入力は少し遅く、例えば3分1マイクロ秒です。これで古いデータが読み込まれます。通常、キャッシングを使用すると、ある程度の "staleness"を受け入れます。データベースが変更についてあなたのプログラムに通知する方法はありますが、あなたの説明から不必要に複雑に聞こえるかもしれません。 –
@Rogerキャッシュを使ってデータの古さを取り除くことはできないと言うことができます。memcacheのような市販のツールがあるので、この問題を取り除くことはできません。 –
[Cache with Fixed Expiry Time Java](http://stackoverflow.com/questions/2340578/cache-with-fixed-expiry-time-in-java) – Bohemian