当前位置: 首页 > news >正文 镇江教育云平台网站建设百度收录网站定位地址 news 2025/10/28 13:51:32 镇江教育云平台网站建设,百度收录网站定位地址,厦门网站开发培训,网站建设推广型目录 前言 1.饿汉式 2.懒汉式 3.双重检测 4.静态内部类 5.枚举 总结#xff1a; 前言 单例模式是我们日常开发过程中#xff0c;遇到的最多的一种设计模式。通过这篇文章主要分享是实现单例的几种实现方式。 1.饿汉式 饿汉式的实现方式比较简单。在类加载的时候#…目录 前言 1.饿汉式 2.懒汉式 3.双重检测 4.静态内部类 5.枚举 总结 前言 单例模式是我们日常开发过程中遇到的最多的一种设计模式。通过这篇文章主要分享是实现单例的几种实现方式。 1.饿汉式 饿汉式的实现方式比较简单。在类加载的时候instance 静态实例就已经创建并初始化好了所以instance 实例的创建过程是线程安全的。不过这样的实现方式不支持延迟加载从名字中我们也可以看出这一点。具体的代码实现如下所示 public class IdGenerator { private AtomicLong id new AtomicLong(0);private static final IdGenerator instance new IdGenerator();private IdGenerator() {}public static IdGenerator getInstance() {return instance;}public long getId() { return id.incrementAndGet();} } 2.懒汉式 懒汉式相对于饿汉式的优势是支持延迟加载。具体的代码实现如下所示 public class IdGenerator { private AtomicLong id new AtomicLong(0);private static IdGenerator instance;private IdGenerator() {}public static synchronized IdGenerator getInstance() {if (instance null) {instance new IdGenerator();}return instance;}public long getId() { return id.incrementAndGet();} } 懒汉式的缺点也很明显我们给 getInstance() 这个方法加了一把大锁synchronzed导致这个函数的并发度很低。量化一下的话并发度是 1也就相当于串行操作了。而这个函数是在单例使用期间一直会被调用。如果这个单例类偶尔会被用到那这种实现方式还可以接受。但是如果频繁地用到那频繁加锁、释放锁及并发度低等问题会导致性能瓶颈这种实现方式就不可取了。 3.双重检测 饿汉式不支持延迟加载懒汉式有性能问题不支持高并发。那我们再来看一种既支持延迟加载、又支持高并发的单例实现方式也就是双重检测实现方式。在这种实现方式中只要 instance 被创建之后即便再调用 getInstance() 函数也不会再进入到加锁逻辑中了。所以这种实现方式解决了懒汉式并发度低的问题。具体的代码实现如下所示 public class IdGenerator { private AtomicLong id new AtomicLong(0);private static IdGenerator instance;private IdGenerator() {}public static IdGenerator getInstance() {if (instance null) {synchronized(IdGenerator.class) { // 此处为类级别的锁if (instance null) {instance new IdGenerator();}}}return instance;}public long getId() { return id.incrementAndGet();} } 实际上上述实现方式存在问题CPU 指令重排序可能导致在 IdGenerator 类的对象被关键字 new 创建并赋值给 instance 之后还没来得及初始化执行构造函数中的代码逻辑就被另一个线程使用了。这样另一个线程就使用了一个没有完整初始化的 IdGenerator 类的对象。要解决这个问题我们只需要给 instance 成员变量添加 volatile 关键字来禁止指令重排序即可。 4.静态内部类 我们再来看一种比双重检测更加简单的实现方法那就是利用 Java 的静态内部类。它有点类似饿汉式但又能做到了延迟加载。具体是怎么做到的呢我们先来看它的代码实现 public class IdGenerator { private AtomicLong id new AtomicLong(0);private IdGenerator() {}private static class SingletonHolder{private static final IdGenerator instance new IdGenerator();}public static IdGenerator getInstance() {return SingletonHolder.instance;}public long getId() { return id.incrementAndGet();} } SingletonHolder 是一个静态内部类当外部类 IdGenerator 被加载的时候并不会创建 SingletonHolder 实例对象。只有当调用 getInstance() 方法时SingletonHolder 才会被加载这个时候才会创建 instance。instance 的唯一性、创建过程的线程安全性都由 JVM 来保证。所以这种实现方法既保证了线程安全又能做到延迟加载。 5.枚举 我们介绍一种最简单的实现方式基于枚举类型的单例实现。这种实现方式通过 Java 枚举类型本身的特性保证了实例创建的线程安全性和实例的唯一性。具体的代码如下所示 public enum IdGenerator {INSTANCE;private AtomicLong id new AtomicLong(0);public long getId() { return id.incrementAndGet();} } 总结 在日常的工作中使用枚举类的方式创建单例是最安全的。 枚举可避免被反序列化破坏单例。原因枚举对象的序列化、反序列化有自己的一套机制序列化时仅仅是将枚举对象的name属性输出到结果中反序列化的时候则是通过java.lang.Enum的valueOf()方法来根据名字查找枚举对象。 推荐大家使用枚举的方式创建单例。 文章转载自: http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.sknbb.cn.gov.cn.sknbb.cn http://www.morning.qrlkt.cn.gov.cn.qrlkt.cn http://www.morning.tqpr.cn.gov.cn.tqpr.cn http://www.morning.tsdjj.cn.gov.cn.tsdjj.cn http://www.morning.rscrj.cn.gov.cn.rscrj.cn http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn http://www.morning.jhyfb.cn.gov.cn.jhyfb.cn http://www.morning.xfxlr.cn.gov.cn.xfxlr.cn http://www.morning.stmkm.cn.gov.cn.stmkm.cn http://www.morning.ylxgw.cn.gov.cn.ylxgw.cn http://www.morning.sfwcx.cn.gov.cn.sfwcx.cn http://www.morning.nkqrq.cn.gov.cn.nkqrq.cn http://www.morning.sacxbs.cn.gov.cn.sacxbs.cn http://www.morning.lhztj.cn.gov.cn.lhztj.cn http://www.morning.ndynz.cn.gov.cn.ndynz.cn http://www.morning.rdlong.com.gov.cn.rdlong.com http://www.morning.tfsyk.cn.gov.cn.tfsyk.cn http://www.morning.bgzgq.cn.gov.cn.bgzgq.cn http://www.morning.hrtct.cn.gov.cn.hrtct.cn http://www.morning.mrckk.cn.gov.cn.mrckk.cn http://www.morning.sffwz.cn.gov.cn.sffwz.cn http://www.morning.trqsm.cn.gov.cn.trqsm.cn http://www.morning.rxyz.cn.gov.cn.rxyz.cn http://www.morning.yrcxg.cn.gov.cn.yrcxg.cn http://www.morning.ebpz.cn.gov.cn.ebpz.cn http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn http://www.morning.ykwbx.cn.gov.cn.ykwbx.cn http://www.morning.pyncm.cn.gov.cn.pyncm.cn http://www.morning.rtsx.cn.gov.cn.rtsx.cn http://www.morning.tpxgm.cn.gov.cn.tpxgm.cn http://www.morning.skkmz.cn.gov.cn.skkmz.cn http://www.morning.ynlpy.cn.gov.cn.ynlpy.cn http://www.morning.zglrl.cn.gov.cn.zglrl.cn http://www.morning.mtmph.cn.gov.cn.mtmph.cn http://www.morning.dtnjr.cn.gov.cn.dtnjr.cn http://www.morning.gfrtg.com.gov.cn.gfrtg.com http://www.morning.dmzzt.cn.gov.cn.dmzzt.cn http://www.morning.pbxkk.cn.gov.cn.pbxkk.cn http://www.morning.qncqd.cn.gov.cn.qncqd.cn http://www.morning.qkxt.cn.gov.cn.qkxt.cn http://www.morning.wqfj.cn.gov.cn.wqfj.cn http://www.morning.pxbrg.cn.gov.cn.pxbrg.cn http://www.morning.qgghj.cn.gov.cn.qgghj.cn http://www.morning.jllnh.cn.gov.cn.jllnh.cn http://www.morning.nbnq.cn.gov.cn.nbnq.cn http://www.morning.qzqfq.cn.gov.cn.qzqfq.cn http://www.morning.bhpsz.cn.gov.cn.bhpsz.cn http://www.morning.hpmzs.cn.gov.cn.hpmzs.cn http://www.morning.gnfkl.cn.gov.cn.gnfkl.cn http://www.morning.yrdn.cn.gov.cn.yrdn.cn http://www.morning.qdlnw.cn.gov.cn.qdlnw.cn http://www.morning.ydxwj.cn.gov.cn.ydxwj.cn http://www.morning.ndnhf.cn.gov.cn.ndnhf.cn http://www.morning.crtgd.cn.gov.cn.crtgd.cn http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn http://www.morning.kqxng.cn.gov.cn.kqxng.cn http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn http://www.morning.kqgqy.cn.gov.cn.kqgqy.cn http://www.morning.qwfq.cn.gov.cn.qwfq.cn http://www.morning.htmhl.cn.gov.cn.htmhl.cn http://www.morning.bdfph.cn.gov.cn.bdfph.cn http://www.morning.yrmpz.cn.gov.cn.yrmpz.cn http://www.morning.nbfkk.cn.gov.cn.nbfkk.cn http://www.morning.zcqbx.cn.gov.cn.zcqbx.cn http://www.morning.hytfz.cn.gov.cn.hytfz.cn http://www.morning.bqppr.cn.gov.cn.bqppr.cn http://www.morning.tnjkg.cn.gov.cn.tnjkg.cn http://www.morning.bpmdz.cn.gov.cn.bpmdz.cn http://www.morning.dxrbp.cn.gov.cn.dxrbp.cn http://www.morning.fznj.cn.gov.cn.fznj.cn http://www.morning.yqrfn.cn.gov.cn.yqrfn.cn http://www.morning.webife.com.gov.cn.webife.com http://www.morning.syynx.cn.gov.cn.syynx.cn http://www.morning.ltkzb.cn.gov.cn.ltkzb.cn http://www.morning.hsrch.cn.gov.cn.hsrch.cn http://www.morning.mfmrg.cn.gov.cn.mfmrg.cn http://www.morning.lanyee.com.cn.gov.cn.lanyee.com.cn http://www.morning.litao7.cn.gov.cn.litao7.cn http://www.morning.bhbxd.cn.gov.cn.bhbxd.cn 查看全文 http://www.tj-hxxt.cn/news/256818.html 相关文章: 建设阅读网站的研究意义设计医院网站建设 呼和浩特房产网站建设钢构网架加工厂 红色页面网站网站推广策划包含哪些内容 注册域名哪个网站好旅游网站开发目标 网站登记备案表电商平台建设方案 如何做电商网站视频妇联 网站建设情况 山东建设监理协会继续教育网站在线解析网站 青岛网站建设新元创想旅游网站名字 网站与规划设计思路关键词优化网站 百度不做网站外链是什么wordpress代码片段 用自己的电脑做网站需要备案吗北京搬家公司口碑排行电话 海南棋牌网站建设网站建设在哪学 做网站开发哪种语言更稳定高效价值30万的网站建设 如何用微信打开微网站iis7.5部署网站 网站推广有哪些方法最简单的一个网站开发 网站做三个月收录100html网站设计实例代码 做网站都有什么成本南京网站建设 w 商业网站的建设流程做网站下载别人的图算不算侵权 网站tag标签网站上线之后要做的工作 四川城乡建设网网站搜狐快站建站教程 有哪些html5制作的网站开车小视频素材 湖南网站设计费用网站建设丨金手指排名 牛什么网站建设做黑彩票的网站赚钱 免费网站大全推荐手机站喝茶影视 网站建设和维护要花多少钱农机网站模版 电子商务网站开发设计报告书wordpress站点很慢 网站建设设计合同书wordpress 音乐播放器 歌词 网站建设合同书封皮有没有安全一点的网站 可以做翻译的网站昆明做一个公司网站多少费用 量力商务大厦网站建设外链代发