加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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)中进行分配,任何线程都可以看到它与正确的先发生关系.嵌套类没有什么特别之处,它只允许在不立即构造单例对象的情况下使用外部类.几乎可以肯定,这完全没有意义,但它似乎取悦了一些人.

像往常一样[可变的]单身人士是一个非常糟糕的主意.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读