网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

java懒汉和饿汉模式的区别有哪些

这篇文章主要讲解了“java懒汉和饿汉模式的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java懒汉和饿汉模式的区别有哪些”吧!

成都创新互联公司2013年至今,是专业互联网技术服务公司,拥有项目成都网站建设、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元南宁做网站,已为上家服务,为南宁各地企业和个人服务,联系电话:13518219792

区别

1、懒汉比较懒,只有当调用getInstance的时候,才回去初始化这个单例。

2、饿汉就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存在的了

线程安全:

饿汉式天生线程安全,可直接用于多线程,无任何问题,

懒汉风格本身是非线程安全的(双检锁解决并发问题)

资源加载和性能:

饿汉式在类创建的同时实例化一个静态对象出来,无论以后是否使用该单例,都会占用一定的内存,但相应地,由于其资源已初始化,第一次调用的速度也会更快。

懒汉式,会延迟加载,在第一次使用本单例时才会出现实例对象,第一次调用时要做初始化,如果要做的工作比较多,性能会有些延迟,以后就像饿汉式一样。

2、实例

public class SingleTon01 {
    public static void main(String[] args) {
        GirlFriend gf1 = GirlFriend.getGf();
        GirlFriend gf2 = GirlFriend.getGf();
        //true
        System.out.println(gf1 == gf2);
 
        Cat cat1 = Cat.getCat();
        Cat cat2 = Cat.getCat();
        //true
        System.out.println(cat1 == cat2);
    }
}
 
 
/**
 * 单例模式-饿汉模式
 * 在类加载的时候就会创建对象
 */
class GirlFriend {
    public String name;
 
    private static GirlFriend gf = new GirlFriend("小红");
 
    public static GirlFriend getGf() {
        return gf;
    }
 
    /**
     * 构造器私有化,不能在本类之外new
     * @param name
     */
    private GirlFriend(String name) {
        this.name = name;
    }
 
    @Override
    public String toString() {
        return "GirlFriend{" +
                "name='" + name + '\'' +
                '}';
    }
}
 
/**
 * 单例模式-懒汉模式
 * 1.构造器私有化
 * 2.提供一个static静态属性对象
 * 3.提供一个public的static方法,返回一个实例对象
 * 4.懒汉模式,只有在用户调用方法时,才会创建对象,之后再次调用,返回的是同一对象
 */
class Cat {
    private String name;
 
    private static Cat cat;
 
    private Cat(String name) {
        this.name = name;
    }
 
    public static Cat getCat() {
        if (cat == null) {
            cat = new Cat("加菲猫");
        }
        return cat;
    }
 
    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}

感谢各位的阅读,以上就是“java懒汉和饿汉模式的区别有哪些”的内容了,经过本文的学习后,相信大家对java懒汉和饿汉模式的区别有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


本文题目:java懒汉和饿汉模式的区别有哪些
URL标题:http://bjjierui.cn/article/jpdjoi.html

其他资讯