实现方式:在第一次使用时才创建实例,通过双重检查锁定来确保只有一个实例,并使用volatile关键字避免指令重排序。特点:实现了延迟加载,但需要处理线程安全问题,代码相对复杂。静态内部类方式:实现方式:利用类装载机制保证初始化实例时只有一个线程,实现延迟加载,效率高。静态内部类负责创建单例对象,并...
秒懂 Java 的单例模式
Java中的单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。其主要实现方式有以下几种:
饿汉式:
实现方式:在类加载时就创建单例对象,通过静态成员变量保存该实例,并将构造方法私有化以防止外部创建实例。特点:实现简单,但无论是否使用实例,都会在类加载时创建,可能造成资源浪费。懒汉式:
实现方式:在第一次使用时才创建实例,通过双重检查锁定来确保只有一个实例,并使用volatile关键字避免指令重排序。特点:实现了延迟加载,但需要处理线程安全问题,代码相对复杂。静态内部类方式:
实现方式:利用类装载机制保证初始化实例时只有一个线程,实现延迟加载,效率高。静态内部类负责创建单例对象,并对外提供访问方法。特点:线程安全,实现简单且高效,是推荐的懒加载实现方式之一。枚举方式:
实现方式:通过定义枚举类,枚举的实例在JVM中是唯一的,且枚举类天生防止反序列化重新创建新的对象。特点:不仅避免了多线程同步问题,还自动支持序列化机制,防止反序列化时重新创建对象,是实现单例模式的最佳方式。单例模式适用于需要全局唯一实例的场景,如配置管理、日志系统、线程池等。但需要注意,单例模式会增加代码复杂度,可能影响代码的可测试性,在使用时需谨慎考虑。
2025-03-09