每日一题:用至少两种方式实现一个Singleton(单例模式)

用至少两种方式实现一个Singleton(单例模式)

  一、静态内部类实现:这种方式是 Singleton类被装载了, instance不一定被初始化。因为SingletonHolder类没有被主动使用,只有显示通过调用getInstance方法时,才会显示装载SingletonHolder类,从而实例化instance。

public class Singleton { 
    private static class SingletonHolder { 
    private static final Singleton INSTANCE = new Singleton(); 
    } 
    private Singleton (){} 
    public static final Singleton getInstance() { 
    return SingletonHolder.INSTANCE; 
    } 
} 

  二、双重检查锁:在JDK1.5之后,双重检查锁定才能够正常达到单例效果。(因为volitile关键字)

public class Singleton { 
    private volatile static Singleton singleton; 
    private Singleton (){} 
    public static Singleton getSingleton() { 
    if (singleton == null) { 
        synchronized (Singleton.class) { 
        if (singleton == null) { 
            singleton = new Singleton(); 
        } 
        } 
    } 
    return singleton; 
    } 
} 

如果对你有帮助可以关注我,还整理了很多大厂面试题,不定期发布到这里https://download.csdn.net/user/weixin_39813541/uploads需要可以下载,都附有答案

 

你可能感兴趣的:(每日一题:用至少两种方式实现一个Singleton(单例模式))