单例模式

    科技2022-08-31  112

    文章目录

    单例模式实现单例模式的注意点实现单例模式的方式(7种以上)饿汉式双检锁含volatile的懒汉式

    单例模式

    实现单例模式的注意点

    整个程序中只能有一个实例 私有构造器私有实例对象对外提供获取实例对象的静态方法

    实现单例模式的方式(7种以上)

    饿汉式:登记式:静态内部类枚举式:懒汉式:同步代码块,同步方法双检锁的懒汉式:volatile关键字ThreadLocal:为每个线程提供变量的独立副本,保证各自线程中都是单例的,但是不同线程之间不保证CAS: new的过程: 分配对象的内存空间初始化对象指向分配的空间 可能出现指令重排 分配对象的内存空间指向分配的空间初始化对象

    饿汉式

    public class Singleton1 { private Singleton1() {} private static Singleton1 instance = new Singleton1(); public static Singleton1 getSingalton1() { return instance; } }

    双检锁含volatile的懒汉式

    public class Singleton2 { private Singleton2() {} private static volatile Singleton2 instance = null; public static Singleton2 getInstance() { if(instance == null) { synchronized (Singleton2.class) {//注意Sychronized锁的对象 if(instance == null){ instance = new Singleton2(); } } } return instance; } }
    Processed: 0.008, SQL: 10