class MyClass
{
private static volatile Resource resource;
public static Resource getInstance()
{
if(resource == null)
resource = new Resource();
return resource;
}
}
Run Code Online (Sandbox Code Playgroud)
这里如果Resource是一个不可变类,编写上面的代码是否安全?正如在实践中的java并发中所提到的那样,"初始化安全性允许在线程之间安全地共享正确构造的不可变对象.因此上述代码可以安全地编写." (第349页第16.3页).但是有了这个可能,如果两个线程检查null并且它们可以继续进行对象创建,这是针对类的不变量(单例).请解释.链接中问题的延续