class Single{
private Single() {
}
private static Single instance = null;
public static synchronized Single getInstance(){
if (instance == null){
instance = new Single();
}
return instance;
}
}
class Single{
private Single(){}
private static Single instance = null;
public static Single getInstance(){
synchronized(Single.class){
if (instance == null){
instance = new Single();
}
}
return instance;
}
}
class Single{
private Single(){}
private static volatile Single instance = null;
public static Single getInstance(){
if (instance == null) {
synchronized (Single.class){
if (instance == null){
instance = new Single();
}
}
}
return instance;
}
}
此方法会导致指令重排,所以要加上 volatile关键字