在 JDK7 和 JDK8 等,多线程环境里,
if(xx == null) xx = new Xx();
这样是否安全? --------------------------
比较典型的例子就是 DCL 双检锁,最近到处找文章看, 往上大批量的都是因为编译器等指令重排,造成:xx = 一个未完整初始化完整的对象。
----------——
这让我有点怀疑码生呀,我写了这么多年的代码,原来全是 BUG 呀。
收起
xx不是被volatile修饰了嘛?
报告相同问题?