单例的三种实现方式

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提供了反射机制,第一种和第二种方式通过反射机制仍然有可能生成多个实例

以上是关于单例的三种实现方式的主要内容,如果未能解决你的问题,请参考以下文章

单例模式的三种实现方式

单例模式的三种写法和优缺点

单例模式实现的三种方式

单例模式的三种实现方式

python实现单例模式的三种方式及相关知识解释

spring的单例模式