基于该对象在同步块内分配对象(Java)

Pet*_*end 5 java synchronization

我遇到了一些(生产!)代码,看起来像下面的代码片段:

synchronized(some_object) {
    some_object = new some_object()
}
Run Code Online (Sandbox Code Playgroud)

我希望这会受到各种可怕的竞争条件的影响,并且第二个线程可能会进入此块,创建一个新对象.我的Java排骨不够好,无法明确说明上面的预期行为,所以好奇你们重构之前你们要说的话.

Ste*_*ein 2

正如弗朗西斯所说,这可能不是问题。您的代码片段相当于:

SomeObject saved = some_object;
synchronized(saved) {
  some_object = new SomeObject()
}
Run Code Online (Sandbox Code Playgroud)