单例的三种实现方式
Posted 用手踢球
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例的三种实现方式相关的知识,希望对你有一定的参考价值。
1双重加锁模式
public class Singleton { private volatile static Singleton singleton; public static Singleton getSingleton(){ if(singleton==null){ synchronized (Singleton.class) { if(singleton==null){ singleton = new Singleton(); } } } return singleton; } private Singleton(){ } }
2静态内部类
public class Singleton { private Singleton(){ } public Singleton getSingleton(){ return SingletonInner.singleton; } private static class SingletonInner{ protected static Singleton singleton = new Singleton(); } }
3枚举
public enum Singleton { Singlton; private Singleton(){ } }
由于java提供了反射机制,第一种和第二种方式通过反射机制仍然有可能生成多个实例
以上是关于单例的三种实现方式的主要内容,如果未能解决你的问题,请参考以下文章