单例设计模式---懒汉式--线程安全和不安全、枚举类

单例设计模式---懒汉式--线程安全和不安全

优点

资源利用率高:只有在真正需要使用单例实例时才进行创建,避免了在应用启动时就占用不必要的资源。

缺点

线程安全问题:在多线程环境下,如果多个线程同时调用获取实例的方法,可能会导致创建多个实例,破坏单例模式的规则。需要额外的同步机制来保证线程安全,但这可能会带来一定的性能开销。

线程不安全

java 复制代码
//懒汉式 线程不安全
public class Singleton {
    //私有构造方法
    private Singleton(){}
    //声明Singleton类型的变量instance
    private static Singleton instance;//只是声明了该类型的变量,并没有创建
    //对外提供访问方式
    public static Singleton getInstance(){
        //判断instance是否为null,如果为null,说明还没有创建Singleton类的对象
        //如果没有创建一个并返回。如果有,直接返回
        if(instance == null){
            //线程1等待,线程2获取到cpu的执行权,也会进入到该判断里面
            //多线程执行时,只要线程停留在这里,其他线程就可以进入,那么就不是单实例模式
            instance = new Singleton();
        }
        instance=new Singleton();
        return instance;
    }
}

public class Client {
    public static void main(String[] args) {
        Singleton instance =Singleton.getInstance();
        Singleton instance1 =Singleton.getInstance();
        //判断两次获取到的Singleton对象是否是同一个对象
        System.out.println(instance==instance1);
    }
}

线程安全

java 复制代码
//线程安全,依据以上线程不安全做修改
public class Singleton {
    //私有构造方法
    private Singleton(){}
    //声明Singleton类型的变量instance
    private static Singleton instance;//只是声明了该类型的变量,并没有创建
    //对外提供访问方式
    public static synchronized Singleton getInstance(){
       
        if(instance == null){
            instance = new Singleton();
        }
        instance=new Singleton();
        return instance;
    }
}

枚举类

饿汉式枚举类是实现单例模式的一种高效且安全的方式。

枚举类型在 Java 中是一种特殊的类,它的实例是有限且固定的。当使用枚举类实现单例模式时,枚举类的实例在类加载时就会被创建,并且是唯一的,这符合饿汉式单例的特点,即在类加载时就初始化单例实例。同时,Java 语言规范保证了枚举类型的实例是线程安全的,并且可以防止反射攻击和反序列化时创建新的实例。

java 复制代码
package patten.demo6;
//饿汉式 枚举类
public enum Singleton {
    INSTANCE;
}

枚举类测试

java 复制代码
public class Client {
    public static void main(String[] args) {
        Singleton instance = Singleton.INSTANCE;
        Singleton instance1 = Singleton.INSTANCE;
        //判断两次获取到的Singleton对象是否是同一个对象
        System.out.println(instance==instance1);
    }

}
相关推荐
KKKlucifer6 小时前
数据安全合规自动化:策略落地、审计追溯与风险闭环技术解析
人工智能·安全
wanhengidc6 小时前
云手机 高振畅玩不踩坑
运维·服务器·安全·web安全·智能手机
易连EDI—EasyLink7 小时前
易连EDI–EasyLink实现OCR智能数据采集
网络·人工智能·安全·汽车·ocr·edi
JS_SWKJ8 小时前
网闸与光闸深度解析:高安全隔离设备核心知识与选型
安全
AIwenIPgeolocation8 小时前
出海应用合规与风控平衡术:可信ID的全球安全实践
人工智能·安全
长安链开源社区8 小时前
长安链2.3.8生产版本发布,安全、开放、灵活的企业级区块链底座
安全·区块链
数智化精益手记局9 小时前
拆解物料管理erp系统的核心功能,看物料管理erp系统如何解决库存积压与缺料难题
大数据·网络·人工智能·安全·信息可视化·精益工程
带娃的IT创业者9 小时前
Bitwarden CLI 供应链攻击深度分析:当密码管理工具本身成为安全威胁
安全·npm·安全漏洞·cli·供应链攻击·bitwarden
企业架构师老王9 小时前
2026制造业安全生产隐患识别AI方案:从主流产品对比看企业级AI Agent的非侵入式落地路径
人工智能·安全·ai
国冶机电安装9 小时前
化工厂生产线设备安装:从工艺安全到系统联动的完整解析
安全