关注
1. 单例模式定义与常见写法:单例模式要求一个类仅有一个对象实例,并提供全局访问点。常见写法有饿汉式、懒汉式、双重加锁验证、静态内部类、枚举等方式。
2. 重点实现方式剖析
- 双重加锁验证(DCL):先判断实例是否为空,为空时加锁,加锁后再次判断为空才创建对象,减少锁竞争以提升效率。不过存在指令重排问题,可能获取到未初始化完全的对象,在Java 5及后续版本,通过将实例变量声明为volatile可解决 。
- 静态内部类方式:借助JVM保证创建单例对象的线程安全与唯一性。外部类加载时,内部类不会立即加载,调用获取实例方法时才会加载并初始化单例对象,实现延迟加载,是较好的实现方法。
- 枚举方式:Effective Java作者推荐,是目前单例模式最佳实现。枚举初始化依靠static代码块,类加载时由JVM调度,线程安全。它还能防止反射和序列化破坏单例,反序列化通过Value方法查找枚举,而非新建对象。其他单例实现可在类上添加readResolve方法防止序列化破坏单例。
查看原帖
1 评论
相关推荐

点赞 评论 收藏
分享

点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 工作中哪个瞬间让你想离职 #
28472次浏览 198人参与
# 在职场上,你最讨厌什么样的同事 #
16338次浏览 165人参与
# 机械人,秋招第一次笔试的企业是哪家? #
41175次浏览 327人参与
# 选了这个offer,你有没有后悔? #
593080次浏览 4029人参与
# 小米硬件提前批进度交流 #
171145次浏览 1528人参与
# 机械求职避坑tips #
53499次浏览 381人参与
# 哪些公司校招卡第一学历 #
75128次浏览 308人参与
# 担心入职之后被发现很菜怎么办 #
139557次浏览 809人参与
# 入职以后才知道的校招谎言 #
89061次浏览 588人参与
# 职场常用语录大全 #
4149次浏览 30人参与
# Offer比较,你最看重什么? #
192193次浏览 1310人参与
# 华子oc时间线 #
1245088次浏览 6487人参与
# 哪些公司开提前批了? #
30100次浏览 277人参与
# 风评不好的公司,你会去吗? #
66059次浏览 463人参与
# 两会劳动法放大招 #
76725次浏览 692人参与
# 应届生初入职场,求建议 #
230332次浏览 2651人参与
# 实习如何「偷」产出? #
56455次浏览 1394人参与
# 不卡学历的大厂有哪些? #
33012次浏览 252人参与
# 校招阶段,学历VS技术哪个更重要? #
19699次浏览 209人参与
# 怎么防止在试用期被辞退 #
129213次浏览 927人参与