在java中使用不可变类的单例

时间:2013-02-26 00:25:16

标签: java concurrency

class MyClass
{
  private static volatile Resource resource;

  public static Resource getInstance()
  {
            if(resource == null)
                      resource = new Resource();
            return resource;
  }
}

如果Resource是一个不可变类,那么编写上面的代码是否安全?正如在实践中的java并发中所提到的那样,“初始化安全性允许在线程之间安全地共享正确构造的不可变对象。因此上述代码可以安全地编写。” (第349页第16.3页)。但是有了这个可能,如果两个线程检查null并且它们可以继续进行对象创建,这是针对类的不变量(单例)。请解释。问题的延续 link

0 个答案:

没有答案