1

这个博客中:

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

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

4

1 回答 1

4

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

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

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

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

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

于 2013-03-17T00:19:21.953 回答