请问为何懒汉模式下,instance可能被实例化两次,而在饿汉模式下不会被实例化两次?
来源:4-2 安全发布对象-四种方法-1
![](http://img1.sycdn.imooc.com/user/54584e120001811202200220-100-100.jpg)
aaaaabbbc
2018-04-13
是因为懒汉模式下,这个getInstance()方法可能会被多个线程调用多次, 从而使 new SingletonExample1()被调用多次。
而饿汉模式下,静态内部成员变量instance只在类加载的时候被调用一次,从而new SingletonExample1()只被调用一次。
写回答
1回答
-
Jimin
2018-04-13
你好,饿汉模式下,直接通过static静态变量直接初始化,jvm可以保证只做一次。
而当前这种懒汉模式,可能会遇到多个线程同时进行初始化,这时如果两个不同的线程同时走到 if(instance == null) 时会都判断成功,就会初始化两次。因此当前这种懒汉模式有一定的概率初始化两次
00
相似问题