所以我有一个 Singleton 类,其中有一个由多个线程调用的非静态公共方法。在非静态方法中,我有对存储过程创建的对象的本地引用,我猜这意味着“新”关键字在某处被调用。
1 public void someMethod(SomeObjectParameter parameter) {
2
3 Thing thingOne = synchornizedStoredProcedureCall():
4 doSomethingWith(thingOne);
5 doSomethingElseWith(thingOne);
6
7 }
目前,第 3 行到第 5 行位于同步代码块中,我想将其简化为仅将存储过程调用同步。
所以...假设我们有两个线程,Thread1 和 Thread2。Thread1 即将执行第 3 行,Thread2 即将执行第 4 行。既然这是一个本地引用,那么每个线程会保持不同的引用还是 synchornizedStoredProcedureCall 会覆盖对 thingOne 的引用,因为 doSomethingWith 即将使用它?
如果 thingOne 被声明为 final 或者我让它不可变怎么办?