单例模式和安全发布对象

来源:4-2 安全发布对象-四种方法-1

慕虎1287928

2019-09-24

什么叫做安全发布对象,是说对象不会逸出吗?
为什么单例模式可以保证对象是安全发布的?

写回答

1回答

Jimin

2019-09-24

你好,对象逸出属于不安全的发布对象,至于为什么说单例属于安全发布对象,说的直白一点,没有在构造完成之前暴露出this引用,再看一下安全发布对象常见手段:

1、在静态初始化函数中初始化一个对象引用
2、将对象的引用保存到volatile类型域或者AtomicReference对象中
3、将对象的引用保存到某个正确构造对象的final类型域中
4、将对象的引用保存到一个由锁保护的域中
这些手段几乎每一种都有一种单例的表现形式能对应上,而且对于一个没问题的单例实现而言,是能保证线程安全的,这时就肯定是安全发布的。

0
2
Jimin
回复
慕虎1287928
是的,单例属于安全发布的一种表现,当然我们说的单例,指的是没有线程安全问题的单例实现,有线程安全的不在考虑范畴
2019-09-25
共2条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程