当前位置: 首页 > 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的全链路免押租赁解决方案
  • 庆祝中华全国总工会成立100周年暨全国劳动模范和先进工作者表彰大会隆重举行,习近平发表重要讲话
  • 吉林省公安厅出入境管理总队政委明志全已任省安保集团总经理
  • 央行副行长:研究建立民营中小企业增信制度,破解民营中小企业信用不足等融资制约
  • 下任美联储主席热门人选沃什:美联储犯下“系统性错误”,未能控制一代人以来最严重的通胀
  • 孟泽:我们简化了历史,因此也简化了人性
  • 体坛联播|巴萨“三杀”皇马夺国王杯,陈妤颉破亚洲少年纪录