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

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

aaaaabbbc

2018-04-13

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

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

写回答

1回答

Jimin

2018-04-13

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

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

0
0

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

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

3923 学习 · 832 问题

查看课程