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

黄岐网站制作百度站长平台官网

黄岐网站制作,百度站长平台官网,高端装饰设计公司名称,dede 子网站前言单例模式(Singleton Pattern)是一种创建型设计模式,确保一个类仅有一个实例,并提供全局访问点。它在需要控制资源(如数据库连接、配置管理)或避免重复创建对象的场景中广泛应用。一,核心概念…

前言

单例模式(Singleton Pattern)是一种创建型设计模式,确保一个类仅有一个实例,并提供全局访问点。它在需要控制资源(如数据库连接、配置管理)或避免重复创建对象的场景中广泛应用。

一,核心概念与特点

  1. 唯一性确保在整个应用程序生命周期中,一个类只有一个实例存在。
  2. 全局访问点通过静态方法(如getInstance())提供唯一实例的访问入口。
  3. 延迟加载部分实现在首次调用时才创建实例,节省资源。

二, 实现方式及代码示例

1.饿汉式单例模式(Eager Initialization)

特点:类加载时立即初始化实例,线程安全但可能浪费资源。

public class Singleton {private static final Singleton INSTANCE = new Singleton();private Singleton() {} // 私有构造器public static Singleton getInstance() { return INSTANCE; }
}

private static final Singleton INSTANCE = new Singleton();定义了一个私有的,静态的,不可改变的Singleton类实例(单例模式中类唯一生成的对象INSTANCE)。在类加载时立即初始化实例,静态意味着这个实例属于类本身,而不是类的某个具体对象。私有确保了这个实例只能在类内部访问。这意味着这个实例一旦初始化后就不能被改变。

private Singleton() {}是一个私有的构造方法也是单例模式的核心,防止类的外部通过new关键字来创建SingleTon类的实例,使得外部无法直接实例化这个类。

public static Singleton getInstance() { return INSTANCE; }这个静态方法是用来获取SingleTon类的唯一实例(INSTANCE),也就是全局唯一访问节点。静态方法可通过类名直接调用

该饿汉式单例​​适合资源占用小、高频率访问且无需延迟加载的场景​​。虽然存在内存浪费风险,但其简洁性、线程安全性和执行效率使其在多数场景中仍是可靠选择。

2.懒汉式单例模式(Lazy Initialization)

特点:线程不安全,​​多线程下可能创建多个实例。

public class Singleton {private static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) { instance = new Singleton(); }return instance;}
}

private static Singleton instance;私有静态变量,用于持有类的唯一实例。instance属于类本身,而不是类的某个实例。与饿汉模式不同,实例创建时间被推迟

private Singleton() {};私有构造方法,防止外部通过new创建类的实例。

public static Singleton getInstance(){};用于获取类的唯一实例。如果实例为空,则创建SingleTon实例;否则,返回已存在的实例。

线程不安全:若线程A和线程B同时调用getInstance()切均检测到instance==null,会各自执行new SingleTon(),生成两个不同的实例,破坏单例唯一性。

即使实例已经被创建,其他线程可能因为缓存未刷新,仍读到null。

为此进行优化。

3.双重检查锁(Double-Checked Locking)​

特点;减少同步次数,仅首次创建时加锁,需用volatile禁止指令重排序.

public class Singleton {private static volatile Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) { instance = new Singleton(); }}}return instance;}
}

private static volatile DCLSingleton instance;volatile确保多线程环境下的可见性:当一个线程更新了 instance 变量后,其他线程会立即看到更新后的值。和有序性:禁止指令重排序,new Singleton()的步骤(分配内存--->初始化对象--->赋值引用)可能被重新排序(分配内存--->赋值引用--->初始化对象)若未初始化完成时其他线程访问instance,会得到未完全构造的对象。volatile会确保对象完全初始化后才暴露引用。

在唯一访问节点getInstance方法中中采用双重null检索机制,第一次检查,如果instance为null,才进入同步块。synchronized (Singleton.class)对DCLSingleton()进行同步,确保同一时刻只有一个线程可以执行该代码块,防止多个线程突破第一次检查后重复创建实例。第二次检查在进入同步块后,instance仍然为null,才创建实例。

这种单例模式常用于高并发下需要懒加载(类加载时没有立即初始化实例)的单例且要求线程安全的场景,例如数据库连接池,配置管理等。

总结

饿汉式单例启动立即开始初始化,占用内存但是访问速度快,以空间换时间;懒汉式单例延迟加载,省内存,以时间换空间

饿汉式适用于实例轻量,高并发频繁访问(如工具类)。

懒汉式适用于重量级实例,需懒加载。

http://www.dtcms.com/wzjs/98406.html

相关文章:

  • wordpress好看的背景图片seo短视频
  • 泉州外贸网站建设都有哪些公司衡水今日头条新闻
  • 网站开发 定制 合同百度云搜索引擎 百度网盘
  • 卡通风格的宣传网站网站开发培训
  • 政府类网站建设网络推广需要多少钱
  • 上海市建设工程材料网站怎样进入12345的公众号
  • 怎么找到做网站的客户域名注册平台有哪些
  • 优秀网站设计 打造有吸引力的网站网页友情链接
  • jsp做网站白云百度seo公司
  • 涿州网站建设天峰怎么做互联网营销推广
  • 小说阅读网站怎么建设关键词语有哪些
  • 做软件赚钱还是做网站赚钱百度收录提交网址
  • 网站建设主要问题软文推广案例500字
  • 网站录屏可以做证据吗查询网址域名ip地址
  • wordpress 头条主题百度seo优化教程
  • 房地产开发公司简介优化大师有必要花钱吗
  • 群晖dsm上的网站建设网络营销专家
  • 网站建设哪里找好用的视频播放器app
  • dede复制网站模板企业培训考试平台官网
  • 中英文网站怎么做seo关键词优化推广价格
  • 不懂的做网站广告软文怎么写
  • 营销网站建设流程国内推广平台有哪些
  • 宜兴市网站建设苏州搜索引擎排名优化商家
  • 做恋爱方面的网站批量查询收录
  • 网站设计中怎么显示链接内容今日大事件新闻
  • 网站建设的要点是什么营销推广活动策划书模板
  • 上海的广告公司网站建设线上广告宣传方式有哪些
  • 网站建设的申请理由站长工具ping检测
  • cocos游戏开发关键词搜索优化外包
  • 河北建设网官网首页深圳seo外包公司