当前位置: 首页 > news >正文

JAVA设计模式——(八)单例模式

JAVA设计模式——(八)单例模式

  • 介绍
  • 理解
  • 实现
    • 饿汉式
    • 懒汉式
  • 应用

介绍

确保一个类只存在一个实例。

理解

就是一个实例,new出来的一个,很简单。不过单例模式分为了懒汉式和饿汉式,其中也有线程安全的实现方式和线程不安全的实现方式。

实现

饿汉式

顾名思义,表现的十分饥饿,在一开始便实例化了一个对象。

关键点,创建一个private的构造函数,可以保证类之外不能实例化新的对象。该方式不存在线程安全问题。

package cn.sh.designepattern;/*** @Author song* @Version 0.0.1* @Date 2025/4/28 19:42* @Contact 643947568@qq.com*/
public class Singleton {private static Singleton singleton = new Singleton();private Singleton() {}public static Singleton getInstance() {return singleton;}
}

懒汉式

在需要的时候才创建对象并且返回这个对象。

下面的方法存在线程安全问题,不知道有没有发现。

class Singleton01 {private static Singleton01 singleton01 = null;private Singleton01() {}public static Singleton01 getInstance() {if (singleton01 == null){    //----------------  1singleton01 = new Singleton01();       // -------------2}return singleton01;}}

这种方式在调用getInstance()时存在并发问题,如何多个线程同时到了代码1中,并且刚好又都判断通过了,所以都会执行2,这时,导致两者使用的对象不相同了,就违背了单例的条件。

下面线程安全的,一次只允许一个线程访问getInstance()

class Singleton01 {private static Singleton01 singleton01 = null;private Singleton01() {}synchronized public  static Singleton01 getInstance() {if (singleton01 == null){singleton01 = new Singleton01();}return singleton01;}}

应用

懒汉式更多用于资源紧缺的系统,可以对未使用的类不提前初始化,从而节约了资源。

饿汉式则在系统启动时便初始化了类,适用一些需要初始便快速响应的系统。

相关文章:

  • 3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目
  • JQuery 使用技巧
  • MCP之一_MCP协议解析
  • 邦芒秘籍:面试时自我介绍主要包含四个方面
  • PyCharm 2023升级2024 版本
  • 线下CPG零售的核心:POG与销量的循环优化
  • 回归问题常用模型以及优缺点和使用场景
  • TP5兼容达梦国产数据库
  • JAVA EE_网络原理_UDP与TCP
  • DeepSearch复现篇:QwQ-32B ToolCall功能初探,以Agentic RAG为例
  • SAP /SDF/SMON配置错误会导致HANA OOM以及Disk Full的情况
  • 【TS入门笔记3---接口(interface)、 函数与泛型 、类与面向对象 】
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 跨平台开发同样支持retain()引用计数器处理.
  • 【Spark入门】Spark RDD基础:转换与动作操作深度解析
  • 爬虫学习笔记(三)--Http协议
  • 厚铜PCB如何兼顾质量与成本?供应商设计规范执行的黄金平衡点
  • 【行业特化篇2】金融行业简历特化指南:合规性要求与风险控制能力的艺术化呈现
  • 软考-软件设计师中级备考 6、数据结构 图
  • 鸿蒙NEXT开发组件截图和窗口截图工具类SnapshotUtil(ArkTs)
  • 榕壹云信用租赁系统:基于ThinkPHP+MySQL+UniApp的全链路免押租赁解决方案
  • 红场阅兵即将开始!中国人民解放军仪仗队亮相
  • 泽连斯基称与特朗普通话讨论停火事宜
  • 北上广深均宣布下调个人住房公积金贷款利率
  • 上任后首访,德国总理与法国总统举行会晤
  • 数据中心业务今年预增50%,丹佛斯:中国是全球最重要的市场
  • 印对巴军事打击后,巴外交部召见印度驻巴临时代办