热门

最新

红包

立Flag

投票

同城

我的

发布
qq_33589510
JavaEdge聊AI Java领域优质创作者
5 年前
trueqq_33589510

万粉博客专家又来免费带新人入门java啦,关注留言,加群交流哦!

CSDN App 扫码分享
分享
1
17
打赏
  • 复制链接
  • 举报
下一条:
传统的两私有一公开(私有构造方法、私有静态实例(懒实例化/直接实例化)、公开的静态获取方法)涉及线程安全问题(即使有多重检查锁也可以通过反射破坏单例),目前最为安全的实现单例的方法是通过内部静态enum的方法来实现,因为JVM会保证enum不能被反射并且构造器方法只执行一次。实现方法如下:/** * 使用枚举的单例模式 * * @see [相关类/方法](可选) * @since [产品/模块版本] (可选) */public class EnumSingleton{ private EnumSingleton(){} public static EnumSingleton getInstance(){ return Singleton.INSTANCE.getInstance(); } private static enum Singleton{ INSTANCE; private EnumSingleton singleton; //JVM会保证此方法绝对只调用一次 private Singleton(){ singleton = new EnumSingleton(); } public EnumSingleton getInstance(){ return singleton; } }}测试方法:public static void main(String[] args) { EnumSingleton obj1 = EnumSingleton.getInstance(); EnumSingleton obj2 = EnumSingleton.getInstance(); //输出结果:obj1==obj2?true System.out.println("obj1==obj2?" + (obj1==obj2));}
立即登录