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