第二章 资源加载 单例模式

作者: Xcdf | 来源:发表于2019-01-15 16:03 被阅读2次

    简书 许乐
    转载请注明原创出处,谢谢!

      在整个系统中,单例类只有一个实例对象,需要自行完成实例化,并且始终对外提供同一实例对象。单例模式只允许创建一个对象,从而避免了频繁的创建对象,比较节省内存资源,减少了GC次数,加快对象访问速度。如数据库连接池、应用配置等一般都是单例。

    静态内部类的写法

    public class SingleTon{
    
     private SingleTon(){}  //构造器私有化
     
     //私有的静态内部类,该静态内部类只会在newInstance()方法中被使用
     private static class SingleTonHoler{
       //静态字段
       static SingleTon INSTANCE = new SingleTon();
     }
    
     public static SingleTon getInstance(){
       return SingleTonHoler.INSTANCE;  // 访问静态内部类的静态字段
     }
    
    }
    

      Java 类加载机制:当第一次访问类中的静态字段时(即调用getstatic或setstatic字节码指令时)会触发类加载操作,并且同一个类只被加载一次,类加载过程中,由类加载器负责加锁,从而保证线程安全。相比于双重检查锁的写法,更加简洁明了,也更加不容易出错。

    问题:为什么使用单例模式而不用静态方法?
      静态内部类的单例模式是基于静态方法(类)来实现的。

    相关文章

      网友评论

        本文标题:第二章 资源加载 单例模式

        本文链接:https://www.haomeiwen.com/subject/qfuydqtx.html