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

java – 私有构造函数和实例 – 多项选择

发布时间:2020-12-15 04:18:24 所属栏目:Java 来源:网络整理
导读:我试图找出以下MC问题的答案.我曾尝试在谷歌上寻找答案,但人们似乎对这个问题有不同的答案.有人可以解释他们的答案. public class Gingleton { private static Gingleton INSTANCE = null; public static Gingleton getInstance() { if ( INSTANCE == null )
我试图找出以下MC问题的答案.我曾尝试在谷歌上寻找答案,但人们似乎对这个问题有不同的答案.有人可以解释他们的答案.

public class Gingleton {
    private static Gingleton INSTANCE = null;

    public static Gingleton getInstance()
    {
        if ( INSTANCE == null )
        {
            INSTANCE = new Gingleton();
        }
        return INSTANCE;
    }

    private Gingleton() {
    }
}

>可以创建多个Gingleton实例(我的选择)
>永远不会创造一个Gingleton
>构造函数是私有的,无法调用
> value可以被垃圾收集,并且可以调用getInstance
返回垃圾数据

解决方法

getInstance()中的新实例创建不会以任何方式同步,因此可能会在多线程环境中创建多个实例.要确保只应该执行一个实例:

public class Gingleton {

    // volatile
    private static volatile Gingleton INSTANCE = null;

    public static Gingleton getInstance()
    {
        if ( INSTANCE == null )
        {
            synchronized (Gingleton.class) {  // Synchronized
                if ( INSTANCE == null )
                {
                    INSTANCE = new Gingleton();
                }
            }
        }
        return INSTANCE;
    }

    private Gingleton() {
    }
}

(编辑:李大同)

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

    推荐文章
      热点阅读