首页 > 编程语言 >JavaSE面试题02:单例设计模式

JavaSE面试题02:单例设计模式

时间:2023-11-20 20:00:09浏览次数:34  
标签:02 面试题 饿汉 JavaInterviewQuestion LAZY INSTANCE 实例 单例 设计模式

单例模式

来源:
https://www.runwsh.com/archives/biitngg1f7s0000

1.什么事Singleton?

Singleton:在Java中 即指单例设置模式,探视软件开发最常用的设置模式之一

通俗解释:单例模式

单:唯一

例:实例

单例设计模式,即某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式

例如:代表JVM运行环境的Runtime类

要点:

一是某个类只能有一个实例

​ 构造器私有化

二是他必须自行创建实例

含有一个该类的静态变量来保存这个唯一的实例

三是它必须自行向整个系统提供这个实例

​ 对外提供获取该类实例对象的方式

几种常见形式

饿汉式:

直接创建对象,不存在线程安全问题
直接实例化饿汉式(简洁直观)

枚举式 (最简洁)

静态代码块饿汉式(适合复杂实例化)

懒汉式:延迟创建对象

线程安全(使用于单线程)

线程不安全(使用于多线程)

静态内部类模式 (适用于多线程)

代码实现如下

JavaInterviewQuestion.java


@Data
public class JavaInterviewQuestion {
    private String properties;
    public static final JavaInterviewQuestion INSTANCE_HUNGRY; // 饿汉式
    static {
        INSTANCE_HUNGRY=new JavaInterviewQuestion();
        Properties proper=new Properties();
        try {
            // 饿汉式通常会出现一些需要读取properties文件一些定义的变量,例如sql的jdbc
            proper.load(JavaInterviewQuestion.class.getClassLoader().getResourceAsStream("application.properties"));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        INSTANCE_HUNGRY.setProperties((String) proper.get("cqw"));
    }

    public static JavaInterviewQuestion INSTANCE_LAZY; // 懒汉式
    public JavaInterviewQuestion getInstanceLazyDemo(){
        if (INSTANCE_LAZY == null ) {
            synchronized (INSTANCE_LAZY) { // 防止初始化实例变量时候,多线程创建多个实例不一致的情况。
                if (INSTANCE_LAZY == null){
                    return INSTANCE_LAZY=new JavaInterviewQuestion();
                }
            }
        }
        return INSTANCE_LAZY;
    }
}

标签:02,面试题,饿汉,JavaInterviewQuestion,LAZY,INSTANCE,实例,单例,设计模式
From: https://www.cnblogs.com/runwsh/p/JavaInterview02.html

相关文章

  • 20231120
    运行flash文件真是一件难事,不如直接转化为mp4通过本次的实验也是学习到了html界面中如何运行swf文件,也是了解到了flash的流氓性。更加深刻的了解到了人机交互技术的重要性。     ......
  • 常见面试题-MySQL软删除以及索引结构
    为什么mysql删了行记录,反而磁盘空间没有减少?答:在mysql中,当使用delete删除数据时,mysql会将删除的数据标记为已删除,但是并不去磁盘上真正进行删除,而是在需要使用这片存储空间时,再将其从磁盘上清理掉,这是MySQL使用延迟清理的方式。延迟清理的优点:如果mysql立即删除数据,会导......
  • NOIP2023游记
    写下这篇游记的时候,我的内心是怎样的五味杂陈啊。随一首歌,随到了《如愿》。世间所有的路都将与你相逢。考前一天便感觉不太对劲,嗓子有点火辣辣地疼,鼻腔内也充斥着少量鼻涕。但这显然是心理作用的吧!于是第二天一上场头就开始变得有些蒙。偏偏系统炸了,大家都下不到题面。等......
  • 20231119 mac 使用dd 命令 烧写 linux img到sd卡
    https://docs.radxa.com/rock5/official-images?model=ROCK+5B下载rock5b官方操作系统文件是一个.img.xz文件打开一个mac终端,ls/dev关注/dev/disk相关的,插入SD卡读卡器到macmini,再次ls/dev 把sd卡格式化sudoddif=/dev/zeroof=/dev/disk4bs=64Mcoun......
  • 20231120
    一个人在机房的第一天呢。早上朝会过后就来机房了,上午有一些人来机房里拿东西什么的,下午就完全是我一个人在机房了。机房很空旷,只有我一个人显得分外冷清,外面黑漆漆的,有点吓人。自己学习了一些有关多项式和生成函数的东西,有点累,脑子要炸了。不过学完之后真的觉得数学很奇妙......
  • MOSFET杂散电容的数量级和大小关系是什么?造成什么影响?(未完结,起始日期2023年11月20日)
    MOSFET结构和特性MOSFET的结构如下:MOSFET的等效电路图如下:为什么MOSFET的等效电路图中包括了电容?MOSFET的栅极和漏极、源极之间通过一层薄氧化物如SiO2隔离,但这层绝缘层非常薄,尤其是栅极和源极之间,通常小于一微米厚,以埃为单位测量。这意味着栅极和源极、漏极之间存在相当大......
  • boot3+JDK17+spring-cloud-gateway:4.0.0+spring-cloud:2022.0.0.0+Nacos2.2.1配置动
    项目依赖配置#Nacos帮助文档:https://nacos.io/zh-cn/docs/concepts.html#Nacos认证信息spring.cloud.nacos.config.username=nacosspring.cloud.nacos.config.password=nacosspring.cloud.nacos.config.contextPath=/nacos#设置配置中心服务端地址spring.cloud.naco......
  • 苹果电脑 Adobe2023 全家桶 Mac 直装版 最新下载安装
    每一个软件都是亲测上传,都是目前最新的,简化了安装流程适用于小白,全部都是无脑直接安装。Adobe2023全家桶直装版更新日期2023-06-11,包含:AdobeIllustrator、AdobeAcrobatProDC、AdobePremierePro、AdobeAudition、AdobePhotoshop、LightroomClassic、AdobeAfter......
  • 学习随笔(设计模式:建造者模式)
    内容今天学习了建造者模式。1.建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2.简单来说就是一个类的所有的特性方法与这个类对象的构建分离3.本来觉得有点类似于工厂模式,但细想又不太一样。工厂模式是创建一个类,这个类用来创新用户......
  • 云原生周刊:Istio 1.20.0 发布 | 2023.11.20
    开源项目推荐DevPodDevPod是一款纯客户端工具,可在任何后端基于devcontainer.json创建可重现的开发人员环境。每个开发者环境都在一个容器中运行,并通过devcontainer.json进行指定。通过DevPod提供商,这些环境可以在任何后端创建,如本地计算机、Kubernetes集群、任何可访问......