关于双重检查成例的问题
已经知道,对于java单例模式,如下的代码
if(instance==null){
synchronized(Singleton.class){
if(instance==null){
instance=new Singleton();
}
}
}
return instance;
是不成立或者说是不安全的,但是为什么
if(instance==null){
synchronized(Singleton.class){
if(instance==null){
Singleton tmp=new Singleton();
instance=tmp;
}
}
}
return instance;
也不行呢?