您显示的代码在技术上不是线程安全的。这种狡猾的代码通常会造成混乱。
该代码应如下所示:
public class Singleton {
private static class SingletonHolder {
public static final Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
在这里,我们在(SingletonHolder
)的静态初始化程序中进行分配,任何以正确 的事前发生 关系访问它的线程都可以看到它。嵌套类没有什么特别的,它只允许使用外部类而无需立即构造单例对象。几乎可以肯定,这是完全 ,但似乎可以使某些人满意。
和以往一样,[ ]单例是一个 主意。