主要是建立对象,这块不是原子性的,致使可能出现空指针问题java
1,咱们先来看一段双检锁的代码指针
private static Client instance; public static Client getInstance(){ if(instance == null){ synchronized (Client.class){ if(instance == null){ //0,建立对象的过程 //1,在内存中开辟空间 //2,在这个空间里实例化对象 //3,将这个实例对象指向这个空间地址 instance = new Client(); } } } return instance; }
2,解决的办法,给instance 加上volatile 修饰便可,这样能够禁止指令重排序,致使返回空对象问题code