小根堆还好,手撸图确实难受……不过我能说你的单列模式写错了么?你这个public的构造方法,我不调用 get() 方法,而是直接 new Single() 你如何保证单例?单例的前提是构造方法必须是 private 诶,还有想要用变量来保证单列,该变量必须要加上volatile关键字,否则在多线程下会有数据一致性问题(内存不可见),可能会同时创建出多个实例。下面是单例的双重检索模式,懒加载、线程安全,还可以避免JVM指令重排序问题。 Public Single{ private static volatile Single instance; private Single(){ } public static Single getInstance(){ if(instance == null){ synchronized(Single.class){ if(instance == null){ instance = new Single(); } } } return instance; } }
点赞 2

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务