为什么静态内部类单例线程安全?

如标题所述,为什么静态嵌套类单例安全" 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

回到顶部