したがって、Singleton クラスがあり、その中に複数のスレッドによって呼び出される非静的パブリック メソッドがあります。非静的メソッドでは、ストアド プロシージャによって作成されたオブジェクトへのローカル参照があります。これは、「new」キーワードがどこかで呼び出されることを意味すると推測しています。
1 public void someMethod(SomeObjectParameter parameter) {
2
3 Thing thingOne = synchornizedStoredProcedureCall():
4 doSomethingWith(thingOne);
5 doSomethingElseWith(thingOne);
6
7 }
現在、3 行目から 5 行目までは同期されたコード ブロックに含まれており、ストアド プロシージャの呼び出しを同期させるだけに減らしたいと考えています。
では... Thread1 と Thread2 の 2 つのスレッドがあるとします。Thread1 は行 3 を実行しようとしており、Thread2 は行 4 を実行しようとしています。これはローカル参照であるため、各スレッドは異なる参照を維持しますか、それとも doSomethingWith がそれを使用しようとしているときに、synchornizedStoredProcedureCall が thingOne への参照を上書きしますか?
thingOne が final と宣言された場合、またはそれを不変にした場合はどうなりますか?