之前在上设计模式的时候老师讲了好几种单例模式,最终说每一个单例模式都有问题,原因在于if语句在多线程中同步,即将if语句放在synchronized外面和里面都会出现问题,最终的修改结果是来两个if语句,这样便很好得解决了多线程中条件判断的不同步而带来的问题:
package com.zj;
public class Instance {
private static volatile Instance instance;
static{
Instance.instance=null;
}
public static Instance getInstance(){
if(Instance.instance==null){
synchronized (Instance.class){
if(Instance.instance==null){
Instance.instance=new Instance();
}
}
}
return Instance.instance;
}
}