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

29次阅读
没有评论

共计 1117 个字符,预计需要花费 3 分钟才能阅读完成。

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;

    // 需要添加的单例对象的其他方法 
}

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2024-01-29发表,共计1117字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)