说说看,你觉得这个在多线程并发的情况下会有问题吗?
考点:1、指令重排,实际上一个bean的创建的创建的指令被分成了两条一条是bean存储空间的创建,另一条是bean的初始化执行。这两条指令可能被重排序。
2、如果先执行了bean存储空间的创建,那么,另外一个线程判断if(instance==null)就是不为空了,继续使用instance的内容,但是另外一条初始化的指令可能还没有执行完成。使用一个未初始化完成的bean可能出现未知错误。
3、使用volatile关键字修饰禁止使用设计的代码做指令重排。