java – 为什么静态内部类单例线程安全
发布时间:2020-12-15 02:06:24 所属栏目:Java 来源:网络整理
导读:参见英文答案 Singleton pattern (Bill Pugh’s solution)????????????????????????????????????5个 正如标题所说,为什么静态嵌套类单例线程安全? public class Singleton { private static class SingletonHolder { public static Singleton instance = nu
参见英文答案 >
Singleton pattern (Bill Pugh’s solution)????????????????????????????????????5个
正如标题所说,为什么静态嵌套类单例线程安全? public class Singleton { private static class SingletonHolder { public static Singleton instance = null; 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)中进行分配,任何线程都可以看到它与正确的先发生关系.嵌套类没有什么特别之处,它只允许在不立即构造单例对象的情况下使用外部类.几乎可以肯定,这完全没有意义,但它似乎取悦了一些人. 像往常一样[可变的]单身人士是一个非常糟糕的主意. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |