Java有序性案例代码
/**
* @author 晓果冻
*/
public class SingleInstance {
private static SingleInstance instance;
private SingleInstance(){};
public static SingleInstance getInstance(){
if(instance == null){
synchronized (SingleInstance.class){
if(instance == null){
instance = new SingleInstance();
}
}
}
return instance;
}
}执行流程

顺序性问题点
instance = new SingleInstance();//这行代码包括如下三个步骤假设执行顺序:
A和线程B同时进入第一个if条件判断。synchronized锁,进入代码块,此时instance为null,所以执行instance=new SingleInstance()语句。instance = new SingleInstance();时,线程A在JVM开辟一块空白的内存空间。A释放锁。instance不为null,但此时instance并未初始化,是一个空对象。如果线程B使用instance对象,可能就会出现问题。