请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

单例模式和安全发布对象

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

正在回答 回答被采纳积分+3

1回答

Jimin 2019-09-24 23:19:24

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

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

0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎1287928 #1
    是说单例模式可以保证:没有在构造完成之前暴露出this引用,所以可以保证安全发布对象?
    回复 有任何疑惑可以回复我~ 2019-09-25 20:07:58
  • Jimin 回复 提问者 慕虎1287928 #2
    是的,单例属于安全发布的一种表现,当然我们说的单例,指的是没有线程安全问题的单例实现,有线程安全的不在考虑范畴
    回复 有任何疑惑可以回复我~ 2019-09-25 21:54:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信