オブジェクトの構築は Java ThreadSafe ですか?次のコード スニペットを参照してください。
//We have some peace of code
public ABCClass(SomeOtherClass obj) {
obj.setState(XYZ);
}
次に、どこかで 50 のスレッドが同時に ABCClass オブジェクトを構築しています。構築中に、SomeOtherClass のオブジェクトの状態を変更しています。
私の質問は、この構築プロセスがアトミックであるか、すべての ABCClass のインスタンス間で共有されているため、スレッドが SomeOtherClass のオブジェクトの古い状態を確認することです。
編集: obj オブジェクトはすべてのコンストラクターで共有されています。
class SomeOtherClass{
private Status state;
public void setState(Status st){
this.state=st;
}
}
// Test Class
class TestClass{
public static void main(String[] args) {
final SomeOtherClass smc=new SomeOtherClass();
for(int i=0;i<50;i++)
{
new Thread(new Runnable() {
@Override
public void run() {
new ABCClass(smc);
}
}).start();
}
}
}