从昨天开始,我一直在阅读并发性,但我不太了解......但是有些事情开始变得清晰......
我理解为什么双重检查锁定不安全(我想知道这种罕见情况发生的可能性是多少)但是volatile 在 1.5 + 中修复了这个问题......
但我想知道这是否发生在putifAbsent
像...
myObj = new myObject("CodeMonkey");
cHashM.putIfAbsent("keyy",myObj);
那么这是否确保当另一个线程执行???myObj
时会 100% 初始化?cHashM.get()
因为它可能有一个引用没有完全初始化(双重检查锁定问题)