单例模式
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;
}
}
这两种方式都可以,线程安全、延迟加载、效率高
本文来自博客园,作者:程序员hg,转载请注明原文链接:https://www.cnblogs.com/hg-blogs/p/16060296.html