私は次の構造を持っています:
public void someMethod(){
//DO SOME STUFF
try{
doSomeProcessing();
}
catch (Exception e){
loadSomeHeavyData();
doSomeProcessing();
}
}
メソッドsomeMethod は、多くのスレッドによって同時に呼び出される場合があります。は例外をスローするdoSomeProcessing 場合があります (バックエンドで使用されているデータが古くなる可能性があります)。
例外がスローされた場合loadSomeHeavyData();、現在のすべてのデータを「更新」し、doSomeProcessing();.
問題:が 1回loadSomeHeavyData();だけ呼び出されるようにするにはどうすればよいですか? のエントリにアトミック フラグを入れると、これをいつクリアする必要があるかわかりません。
どうすればこれを解決できますか? 注意:外部 API であるため変更できず、デコレータ パターンを使用して使用しています。loadSomeHeavyData();doSomeProcessing();