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