请稍等 ...
×

采纳答案成功!

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

请问为何懒汉模式下,instance可能被实例化两次,而在饿汉模式下不会被实例化两次?

是因为懒汉模式下,这个getInstance()方法可能会被多个线程调用多次, 从而使 new SingletonExample1()被调用多次。

 而饿汉模式下,静态内部成员变量instance只在类加载的时候被调用一次,从而new SingletonExample1()只被调用一次。https://img1.sycdn.imooc.com//szimg/5ad0881c00010ade09110514.jpg

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

1回答

Jimin 2018-04-13 19:14:05

你好,饿汉模式下,直接通过static静态变量直接初始化,jvm可以保证只做一次。

而当前这种懒汉模式,可能会遇到多个线程同时进行初始化,这时如果两个不同的线程同时走到 if(instance == null) 时会都判断成功,就会初始化两次。因此当前这种懒汉模式有一定的概率初始化两次

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信