文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java的懒汉与饿汉模式怎么实现

2023-06-27 10:28

关注

今天小编给大家分享一下Java的懒汉与饿汉模式怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

首先,我们先了解下单例模式的定义:单例设计模式目的是使得类的一个对象成为系统中的唯一实例。

再看下,Java 中单例模式的定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供。

那么,所谓“懒汉式”与“饿汉式”的区别,是在于建立单例对象的时间不同。

“懒汉式”:是在你真正用到的时候才去建这个单例对象;

“饿汉式”:在不管你用的用不上,一开始就建立这个单例对象。

一、饿汉式

饿汉式:通俗的来讲,这位打工人对干饭特积极,不管饿不饿都跟饿死鬼似的,老早的就把干饭工具准备好了( new 对象),随时准备干饭。

上代码:

class Hungry_people{

    private int id;

    private String name;

    private Hungry_people(){

    }        //构造器私有化

    private static Hungry_people Instance=new Hungry_people();  

    //内部创建类的对象

    public static Hungry_people getInstance(){

        return Instance;

    }

    //提供公共的静态方法,且返回对象。

}

public class Test1 {

    public static void main(String[] args) {

        Hungry_people hungry1 = Hungry_people.getInstance();

        Hungry_people hungry2 = Hungry_people.getInstance();

    }

}

二、懒汉式

懒汉式:通俗的讲,这位打工人对干饭一点都不上心,碗筷脏了也不理,啥时候要干饭了才来洗碗筷( new 对象)。

上代码:

class Lazy_people {

    private Lazy_people(){

    }

    private static Lazy_people Instance = null;

    //声明当前对象没有初始化值

    public static Lazy_people getInstance(){

        if (Instance == null){

            Instance=new Lazy_people ();

            //需要再造对象,不要就不new对象了

        }

        return Instance;

    }

}

public class Test2 {

    public static void main(String[] args) {

       Lazy_people lazy1 = Lazy_people.getInstance();

    }

}

三、饿汉和懒汉有啥不同

对于饿汉式:

优点:线程贼安全

缺点:对象加载时间过长

对于懒汉式:

优点:延迟对象的创建,更快

缺点:多线程安全贼低,但是可以通过优化使其可用。

四、常见面试题

懒汉式和饿汉式有什么不同?

答:懒汉式的特点在于实例的延迟加载。

懒汉式的延迟加载有没有问题?

答:遇到多线程访问时会出现安全问题。

如何解决该问题?

答:可以增加同步来解决。

增加同步的方式?

答:用同步方法或同步代码块都可以,但是同步方法稍微有点低效。

增加同步时,使用的锁是哪一个?

答:该类所属的字节码文件对象。

以上就是“Java的懒汉与饿汉模式怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯