雙重檢查鎖(double checked locking)
隻在第一次調用getInstance時, 進行同步加鎖
public class DclSingleton{
private DclSingleton(){}
private static volatile DclSingleton instance = null;
public static DclSingleton getInstance(){
if (instance == null){
synchronized(DclSingleton.class){
if (instance == null) {
instance = new DclSingleton();
}
}
}
return instance;
}
}
靜态内部類實作
class Singleton2{
private Singleton2(){}
private static class innerClass{
private static Singleton2 instance =new Singleton2();
}
public static Singleton2 getInstance(){
return innerClass.sa;
}
}
枚舉
enum Singleton3{
instance;
}