美文网首页
双重检测锁的替换方案

双重检测锁的替换方案

作者: 晨暮时代 | 来源:发表于2019-05-15 11:23 被阅读0次

原文来自:https://www.baeldung.com/java-singleton-double-checked-locking

根据原文写出如下替换案例:

public class InitOnDemandSingleton {

    InitOnDemandSingleton() {
        System.out.println("InitOnDemandSingleton");
    }

    private static class InstanceHolder {
        InstanceHolder() {
            System.out.println("InstanceHolder");
        }
        private static final InitOnDemandSingleton INSTANCE = new InitOnDemandSingleton();
    }

    public static InitOnDemandSingleton getInstance() {
        System.out.println("getInstance()");
        return InstanceHolder.INSTANCE;
    }

    public static void main(String[] agrs) {
        InitOnDemandSingleton.getInstance();
    }
}

其中静态内部类InstanceHolder 只有在加载的时候才初始化,也就是说,当调用getInstance()方法时,INSTANCE才会初始化,仍旧实现了懒加载。

除此之外,还有Enum Singleton方案。案例如下:

public enum EnumSingleton {
    INSTANCE;

    public void metho01(String msg) {
        System.out.println(msg);
    }

    public void metho02(String msg) {
        System.out.println(msg);
    }
}

调用方式为:

EnumSingleton.INSTANCE.metho01("执行方法1");
EnumSingleton.INSTANCE.metho02("执行方法2");

EnumSingleton 在此处即表现为一个单例对象。甚至比上例更加简明。

相关文章

  • 双重检测锁的替换方案

    原文来自:https://www.baeldung.com/java-singleton-double-check...

  • java安全编码指南之:锁的双重检测

    简介 双重检测锁定模式是一种设计模式,我们通过首次检测锁定条件而不是实际获得锁从而减少获取锁的开销。 双重检查锁定...

  • 双重检测锁的缺陷

    双重检测锁实现的单例模式看起来非常完美,实则会出现同步问题。 1处会将线程进行同步。 2处会再次检查是否已经被其他...

  • Android(Java)枚举单例

    常规方式 懒汉式 DCL「双重检测锁:Double Checked Lock」 优点:线程安全;延迟加载;效率较高...

  • 避免单例模式被反序列化和反射创建出新的实例

    双重检测锁的单例模式 使用反射获取实例测试 使用反序列化获取实例测试

  • 单例

    双重锁检测 new SingleInstance()指令1.加载到内存,分配内存地址2.执行对象初始化3.赋值vo...

  • 单例模式

    双重锁 静态内部类

  • 单列模式的多种实现方式

    懒汉模式 饿汉模式 双重同步锁单例模式 volatile+双重同步锁单例模式 静态的工厂方法 枚举

  • JAVA单例模式

    java使用单例设计模式的方式有很多种,比如饿汉式,懒汉式,静态内部类式,双重检测锁式以及枚举方式,这里主要讲枚举...

  • 正则表达式总结练习

    1.检测重复的单字符进行替换: 2.检测单元组字符进行替换: 3.检测输入的IP4格式是否正确:

网友评论

      本文标题:双重检测锁的替换方案

      本文链接:https://www.haomeiwen.com/subject/oqtpaqtx.html