为了账号安全,请及时绑定邮箱和手机立即绑定

老师说饿汉模式是线程安全的,为什么没有用synchronized 关键词修饰?

采用synchronized  关键词修饰与不采用synchronized  关键词修饰有什么区别?

正在回答

3 回答

thread 1和thead2 对于 条件判断 ,有可能都判定if(instance==null)为真!,这样就会生成两个对象

1 回复 有任何疑惑可以回复我~

Cphantom 说的准确!

0 回复 有任何疑惑可以回复我~

因为这个类在加载的时候就实例化了,就算thread1和thread2同时获取它,取到的是类加载时实例化的那个变量的值,所以说是线程安全的;而懒汉式线程不安全,因为有可能thread1在if(instance==null)判断为真时进入了if体里但又没开始实例化,而这时thread2也进来了,最终就会有2个实例了。

17 回复 有任何疑惑可以回复我~
#1

慕粉16012980

这种情况,程序是会报错还是生成2个对象?
2017-04-06 回复 有任何疑惑可以回复我~
#2

0x0wh04m1 回复 慕粉16012980

2个对象
2017-05-25 回复 有任何疑惑可以回复我~
#3

sd1700092

但这种情况概率很低吧,有必要这么慌张吗!
2017-07-14 回复 有任何疑惑可以回复我~
#4

慕后端244733 回复 sd1700092

真正debug起来你就能体会到
2018-06-01 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

老师说饿汉模式是线程安全的,为什么没有用synchronized 关键词修饰?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信