饿汉和懒汉

饿汉和懒汉

饿汉

1
2
3
4
5
6
7
8
9
10
11
        //1.创建私有构造方法
    private SingletonOne() {
         
    }
    //2.创建该类型的私有静态实例
    private static SingletonOne instance=new SingletonOne();
     
    //3.创建共有静态方法,返回私静态实例
    public static SingletonOne getInstance() {
        return instance;
    }

懒汉

1
2
3
4
5
6
7
8
9
10
11
12
13
//1.创建私有构造方法
    private SingletonTwo() {
         
    }
    //2.创建该类的静态私有实例
    private static SingletonTwo instance=null;
    //3.创建公有静态方法,返回实例对象
    public static SingletonTwo getInstance() {
        if(instance==null) {
            instance=new SingletonTwo();
        }
        return instance;
    }

在类加载的时候,静态属性和方法优先加载。饿汉和懒汉的2,3步骤都是静态,都是优先加载。只不过懒汉的创建实例放在了步骤3中,难道系统优先加载步骤3的时候不会对if进行判断?为什么饿汉是加载是就创建了实例,懒汉就是调用的时候才创建实例。不明白

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

懒汉式加载类的时候并不会真正的去开辟内存空间储存对象,而是在第一次调用的时候,先去判断是否已经初始化对象了,没有才去开辟内存空间进行对象的初始化。而饿汉就直接在加载类的时候就去开辟内存空间进行对象的创建了。

提问者 oreooooo 2017-08-23 15:49:25

哦哦哦哦,貌似懂了一点

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码