关注
1. 单例模式定义与常见写法:单例模式要求一个类仅有一个对象实例,并提供全局访问点。常见写法有饿汉式、懒汉式、双重加锁验证、静态内部类、枚举等方式。
2. 重点实现方式剖析
- 双重加锁验证(DCL):先判断实例是否为空,为空时加锁,加锁后再次判断为空才创建对象,减少锁竞争以提升效率。不过存在指令重排问题,可能获取到未初始化完全的对象,在Java 5及后续版本,通过将实例变量声明为volatile可解决 。
- 静态内部类方式:借助JVM保证创建单例对象的线程安全与唯一性。外部类加载时,内部类不会立即加载,调用获取实例方法时才会加载并初始化单例对象,实现延迟加载,是较好的实现方法。
- 枚举方式:Effective Java作者推荐,是目前单例模式最佳实现。枚举初始化依靠static代码块,类加载时由JVM调度,线程安全。它还能防止反射和序列化破坏单例,反序列化通过Value方法查找枚举,而非新建对象。其他单例实现可在类上添加readResolve方法防止序列化破坏单例。
查看原帖
1 评论
相关推荐
09-15 23:26
南京航空航天大学 Java 点赞 评论 收藏
分享
09-05 20:51
沈阳航空航天大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 国企秋招,你投了吗? #
17820次浏览 154人参与
# 应届生第一份工作最好去大厂吗? #
23220次浏览 456人参与
# 乐堡互娱校招 #
27850次浏览 251人参与
# 你在职场中沾染到的“坏”习惯 #
14361次浏览 119人参与
# 机械人,你最希望上岸的公司是? #
183959次浏览 1899人参与
# 拿到offer之后,可以做些什么 #
31722次浏览 189人参与
# 携程求职进展汇总 #
619622次浏览 4555人参与
# 海尔求职进展汇总 #
7958次浏览 35人参与
# 你会为了工作牺牲生活吗? #
43585次浏览 348人参与
# 机械只有转码才有出路吗? #
140122次浏览 1629人参与
# 通信硬件岗投递时间线 #
25559次浏览 88人参与
# 贝壳求职进展汇总 #
28386次浏览 162人参与
# 央国企投递记录 #
111647次浏览 1451人参与
# 互联网回暖,腾讯要招5000人! #
21373次浏览 584人参与
# 入职跑路最快的一次经历 #
31762次浏览 209人参与
# 机械求职避坑tips #
64659次浏览 441人参与
# 硬件开发岗知多少 #
17246次浏览 124人参与
# ___岗狗都不干,我干! #
17112次浏览 120人参与
# 为什么国企只招应届生 #
200781次浏览 1223人参与
# kpi面有什么特征 #
78968次浏览 463人参与
# 校招谈薪技巧 #
46605次浏览 671人参与
# 歌尔求职进展汇总 #
65712次浏览 352人参与