// 饿汉模式 public class Singleton{ // 私有化默认构造函数,防止独自创建对象 private Singleton(){ } // 饿汉饿极了,上来直接就开'吃'了,虚拟机启动就创建实例对象 private static Singleton instance = new Singleton(); // 返回实例 public static Singleton getInstance(){ return instance; } }
// 懒汉模式(多线程会出问题) public class Singleton{ // 私有化默认构造函数,防止独自创建对象 private Singleton(){ } // 懒汉比较懒,不创建实例对象,用的时候再创建 private static Singleton instance; public static Singleton getInstance(){ if(instance == null){ instance = new Singleton(); } return instance; }
// 懒汉双检锁,避免多线程导致并发问题 pulblic class Singleton{ private Singleton(){}; private volatile static Singleton instance; public static Singleton getInstance(){ if(instance == null){ Synchronized(Singleton.class){ if(instance == null){ instance = new Singleton(); } } } return instance; } }