> 原文:如果2和3进行了重排序的话,线程B进行判断if(instance==null)时就会为**true**,而实际上这个instance并没有初始化成功,显而易见对线程B来说之后的操作就会是错得。 在解释双重加锁的时候提到指令重排序后,如果先分配内存地址而不是先初始化,内存地址现在已经有值,那么`if(instance==null)`是不是应该返回为**false**