单身解决方案

时间:2013-03-17 00:11:55

标签: java methods static singleton

this博客中:

  

清单10中的代码不使用同步并确保这一点   在对静态进行调用之前,不会创建Singleton对象   getInstance()方法。

上述报价不是假的吗?由于静态对象在类的早期初始化,如何在调用静态getInstance()方法之前不创建对象?

1 个答案:

答案 0 :(得分:4)

问题中引用的代码基本上是这样的:

class Singleton {
  private static Singleton instance = new Singleton();

  public static Singleton getInstance() {
    return instance;
  }
}

这个线程安全的,因为实例不是延迟初始化的,而是在加载类时实例化一次。

类加载器强制执行自己的同步,以保证类初始化是线程安全的。