单例模式的4种实现方式

话不多说,贴代码 网上有许多实例,这是我在本地自己敲的



package test;


public class Singleton {
    /*
    //饿汉式单例模式实现
    private Singleton(){}
    
    private static Singleton instance = new Singleton();

    public static Singleton getInstance(){
        
        return instance;        
    }*/
    
    /*
    //懒汉式单例实现  当线程A B同一瞬间进入get方法  首先都为空  A进入执行完后 B执行也判断为空 多次new 不唯一  需双重判断(双重检查锁定)
    private static Singleton instance = null;
    private Singleton(){}
    public static Singleton getInstance(){
        
        if(instance==null){
        synchronized (Singleton.class) {    
                instance =new Singleton();
            }
        }    
        return instance;
    }*/
    /*//懒汉式双重检查锁定
    private volatile static  Singleton instance = null;//不缓存 每次取值刷新
    
    private Singleton(){}
    
    public static Singleton getInstance(){
        
        if(instance==null){
            synchronized(Singleton.class){
                if(instance==null){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }*/
    //IoDH实现单例模式
    private Singleton(){}
    
    private static  class HolderClassr{
        private  static final Singleton instance =new Singleton();
     }
    
    public static Singleton getInstance(){
        return HolderClassr.instance;
    }
                
    
    public static void main(String[] args){
        
        Singleton s1,s2;
        s1 = Singleton.getInstance();
        s2 = Singleton.getInstance();
        System.out.println(s1==s2);
        
        
    }
}

猜你喜欢

转载自blog.csdn.net/qq_35180232/article/details/77366601