单例那个在没加volitile之前,就那个双重null判断,应该就会造成创建多个实例吧
来源:9-5 jmm的内存可见性
xiaoji_only
2020-03-27
A线程进入到第一个null判断,此时B线程获取到cpu的执行权,它也进入第一个判断,此时都通过了,后面不管A线程先执行还是B线程先执行,进入到第二个null判断的时候,A、B线程此时获取到的instance实例都是null,自然就造成了不安全
写回答
1回答
-
翔仔
2020-03-28
不是呀,A和B只有一个能进入到synchronized里面,如果按照同学说的那种情况,如果A先执行,A获取到同步锁,然后B此时被阻拦在外面,A就去创建实例。。之后A释放锁,B获取到锁,进入到第二个if,发现是有实例的,就直接返回了呀
012022-07-14
相似问题