静态内部类单例 线程安全-Java版
发布于 2020-04-16 14:35:40
关注者
0
被浏览
890
1 个回答
-
我比较倾向于使用静态内部类的方法,这种方法也是《Effective Java》上所推荐的。
public class Singleton { private static class SingletonHolder { private static final Singleton uniqueInstance = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return SingletonHolder.uniqueInstance; } }
这种写法仍然使用JVM本身机制保证了线程安全问题;由于 SingletonHolder 是私有的,除了 getInstance() 之外没有办法访问它,因此它是懒加载的;同时读取实例的时候不会进行同步,没有性能缺陷;也不依赖 JDK 版本。