热门
最新
红包
立Flag
投票
同城
我的
发布
JavaEdge聊AI
Java领域优质创作者
5 年前
trueqq_33589510
万粉博客专家又来免费带新人入门java啦,关注留言,加群交流哦!
下一条:
传统的两私有一公开(私有构造方法、私有静态实例(懒实例化/直接实例化)、公开的静态获取方法)涉及线程安全问题(即使有多重检查锁也可以通过反射破坏单例),目前最为安全的实现单例的方法是通过内部静态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));}
立即登录