定义
是一种常用的软件设计模式,一个类再一个jvm中只有一个实例。
优缺点
在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例;避免对资源的多重占用
不适用于变化的对象
创建方式
饿汉式 - 提前创建好,用到时候直接取
-- 是否为线程安全的 ?????public class Singleton{private static Singleton instance = new Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}}
懒汉式 - 类一加载就创建对象
public class Singleton{private static Singleton instance = null;private Singleton(){}public static Singleton getInstance(){if(instance == null){return new Singleton();}return instance;}}
线程安全的双检锁模式
public class Singleton {//禁止指令重排序//保证线程之间可见性private static volatile Singleton instance = null;private SingletonDemo() {}public static Singleton getInstance() {if (instance == null) { //提高性能synchronized (Singleton.class) {if (instance == null) {instance = new SingletonDemo();}}}return instance;}
