クラス「Foo」と呼ばれる Web アプリにクラスがあるとします。Spring を使用して Bean を作成するときに呼び出される initialise() メソッドがあります。次に、initialise() メソッドは、外部サービスをロードしてフィールドに割り当てようとします。サービスに接続できなかった場合、フィールドは null に設定されます。
private Service service;
public void initialise() {
// load external service
// set field to the loaded service if contacted
// set to field to null if service could not be contacted
}
誰かがクラス「Foo」で get() メソッドを呼び出すと、initialise() メソッドでサービスが開始されていれば、サービスが呼び出されます。サービスのフィールドが null の場合、外部サービスをロードしてみます。
public String get() {
if (service == null) {
// try and load the service again
}
// perform operation on the service is service is not null
}
このようなことをすると、同期の問題が発生する可能性はありますか?