关注
1. 单例模式定义与常见写法:单例模式要求一个类仅有一个对象实例,并提供全局访问点。常见写法有饿汉式、懒汉式、双重加锁验证、静态内部类、枚举等方式。
2. 重点实现方式剖析
- 双重加锁验证(DCL):先判断实例是否为空,为空时加锁,加锁后再次判断为空才创建对象,减少锁竞争以提升效率。不过存在指令重排问题,可能获取到未初始化完全的对象,在Java 5及后续版本,通过将实例变量声明为volatile可解决 。
- 静态内部类方式:借助JVM保证创建单例对象的线程安全与唯一性。外部类加载时,内部类不会立即加载,调用获取实例方法时才会加载并初始化单例对象,实现延迟加载,是较好的实现方法。
- 枚举方式:Effective Java作者推荐,是目前单例模式最佳实现。枚举初始化依靠static代码块,类加载时由JVM调度,线程安全。它还能防止反射和序列化破坏单例,反序列化通过Value方法查找枚举,而非新建对象。其他单例实现可在类上添加readResolve方法防止序列化破坏单例。
查看原帖
1 评论
相关推荐
牛客热帖
更多
- 1... 工作半年后更确定:我们依然不欠优绩主义什么6104
- 2... 我建了一个分享实习业务的仓库,欢迎大家贡献哦3792
- 3... 岁末论道:谁才是牛客 2025 最强修仙者?3160
- 4... #牛客2025仙途报告#居然是五颗星2528
- 5... 腾讯 微信支付一面面经2517
- 6... 【2025-年终总结】25届毕业生果果牛这一年~2184
- 7... 仙途报告1964
- 8... 一个程序员的自救书|从酒吧陪玩DM到上岸大厂1918
- 9... 在当下这个社会,在人生这个无常的时代,我真心希望你和各位牛友开心1418
- 10... 壕壕壕,京东发7个月年终,此生要做东孝子1316
正在热议
更多
# 牛客2025仙途报告 #
14682次浏览 257人参与
# 实习要如何选择和准备? #
130270次浏览 1509人参与
# 元旦假期你打算怎么过 #
1045次浏览 33人参与
# 你有哪些缓解焦虑的方法? #
44613次浏览 868人参与
# 格力求职进展汇总 #
197794次浏览 1267人参与
# 实习没人带,苟住还是跑路? #
540次浏览 18人参与
# 上班后和你想的一样吗? #
95210次浏览 701人参与
# 双非本科的出路是什么? #
189435次浏览 1500人参与
# 找工作,行业重要还是岗位重要? #
87660次浏览 1751人参与
# 我们是不是被“优绩主义”绑架了? #
1978次浏览 72人参与
# 今年你最想重开的一场面试是? #
13398次浏览 144人参与
# 一人说一个提前实习的好处 #
24399次浏览 321人参与
# 机械人晒出你的简历 #
148533次浏览 885人参与
# vivo工作体验 #
35095次浏览 136人参与
# 你面试体验感最差/最好的公司 #
29856次浏览 493人参与
# 礼物开箱Plog #
3347次浏览 102人参与
# 牛友们的论文几号送审 #
63151次浏览 833人参与
# 秋招落幕,你是He or Be #
23134次浏览 395人参与
# 你觉得机械有必要实习吗? #
16403次浏览 95人参与
# 机械只有读研才有出路吗? #
30912次浏览 261人参与