单例模式

双重锁

public final class Singleton {
    private static volatile Singleton instance = null; // volatile 防止jvm字节码重排后出现DCL失效问题

    private Singleton(){

    }

    public static Singleton getSingleton(){
        if(instance==null){ //避免每次都要进入同步方法,提高效率
            synchronized (Singleton.class){
                if(instance==null){ //防止其他线程已经实例化
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

静态内部类

public class Singleton{
  private Singleton(){}
 
  private static class Holer{// 外部类加载时并不需要立即加载内部类,内部类不被加载则不去初始化INSTANCE,故而不占内存
     private static SingleTon instance = new SingleTon();
 }
 
  public static getSingleton(){
    return Holer.instance;
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例设计模式所解决的问题就是:保证类的对象在内存中唯一。 举例: A、B类都想要操作配置文件信息Config.ja...
    飞天_shine阅读 236评论 0 0
  • 1 场景问题# 1.1 读取配置文件的内容## 考虑这样一个应用,读取配置文件的内容。 很多应用项目,都有与应用相...
    七寸知架构阅读 6,885评论 12 68
  • 单例模式(Singleton Pattern)是 编程语言中最简单的设计模式之一。这种类型的设计模式属于创建型模式...
    Hi夜城阅读 464评论 1 10
  • 概念 确保某一个类只有一个实例,而且自行实例化,并向整个系统提供一个访问它的全局访问点,这个类称为单例类。 特性 ...
    野狗子嗷嗷嗷阅读 558评论 0 2
  • 晚饭后在房间里看《茶花女》,突然听到门外有敲门声,在客厅的妈妈去开了门。 我出到房间去看,发现是Vania,邻居家...
    回家部部长阅读 345评论 0 0