单例模式
1.双重检查锁
public class Singleton {
private static volatile Singleton singleton;
private Singleton(){}
public static Singleton getSingleton(){
if (singleton ==null){
synchronized (Singleton.class){
if (singleton==null){
singleton = new Singleton();
}
}
}
return singleton;
}
}
2.静态内部类的方式
public class Singleton {
private Singleton(){}
private static class SingletonInstance{
private static final Singleton SINGLETON = new Singleton();
}
public static Singleton getInstance(){
return SingletonInstance.SINGLETON;
}
}
这两种方式都可以,线程安全、延迟加载、效率高