??????????
????synchronized(this)??synchronized(MyClass.class)??????????synchronized??????????????????synchronized????????????
????synchronized???????ó????????????????????

 

public class Singleton {
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}

 

??????????????????????????????????й?????????????????????????????????????????°??java?????????
???????????????????????????????????????????????????????????????????????????????????????????????飩

//???????????????????
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
???????????????????????????????????????????д?????£?
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}

????volatile????????????????е????????????????????????????????????????
??????synchronized???α?????get??set??????????????????volatile???α????????Ч?????????????????synchronized???????????????????????????????????棬??????????ж????????±????????????synchronized???л????Ч??????????Ч???????????????????synchronized??????????????С??????????????????????volatile??????volatile??????????????á?