#懒汉式,线程安全 public class Singleton{ private static Singleton instance; private Singleton(){} public static synchronized Singleton getInstance(){ if (instance == null){ instance = new Singleton(); } return instance; } } #优点:第一次调用才初始化,避免内存浪费。 #缺点:必须加锁 synchronized 才能保证单例,但加锁会影响效率。
#饿汉式 public class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instance; } }
#双检锁/双重校验锁 public class Singleton{ private volatile static Singleton singleton; private Singleton(){} public static Singleton getSingleton(){ if (singleton==null){ synchronized (Singleton.class){ if (single == null){ singleton = new Singleton(); } } } return singleton; } }