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