java单例模式的实现方式是什么

avatar
作者
筋斗云
阅读量:0

Java中实现单例模式的方式有以下几种:

  1. 饿汉式(Eager Initialization):在类加载时就创建单例对象,并通过静态方法返回。此方式在多线程环境下是安全的。
public class Singleton {     private static final Singleton instance = new Singleton();          private Singleton() {}          public static Singleton getInstance() {         return instance;     } } 
  1. 懒汉式(Lazy Initialization):在调用获取单例对象的方法时才创建单例对象。此方式在多线程环境下需要进行线程同步处理。
public class Singleton {     private static Singleton instance;      private Singleton() {}      public static synchronized Singleton getInstance() {         if (instance == null) {             instance = new Singleton();         }         return instance;     } } 
  1. 双重校验锁(Double-Checked Locking):在懒汉式的基础上进行改进,在创建实例时增加了一次判空校验,减少了不必要的同步开销。
public class Singleton {     private volatile static Singleton instance;      private Singleton() {}      public static Singleton getInstance() {         if (instance == null) {             synchronized (Singleton.class) {                 if (instance == null) {                     instance = new Singleton();                 }             }         }         return instance;     } } 
  1. 静态内部类(Static Inner Class):利用静态内部类的特性,实现懒加载并保证线程安全。
public class Singleton {     private Singleton() {}      private static class SingletonHolder {         private static final Singleton instance = new Singleton();     }      public static Singleton getInstance() {         return SingletonHolder.instance;     } } 
  1. 枚举(Enum):利用枚举的特性,实现单例模式。枚举是线程安全且只会被实例化一次。
public enum Singleton {     INSTANCE;      // 需要添加的单例对象的其他方法 } 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!