美文网首页
如何更好的实现一个单例

如何更好的实现一个单例

作者: jacksu在简书 | 来源:发表于2016-09-13 09:10 被阅读60次
    public class Printer { 
      private Printer(){ }
      public static Printer newInstance(){
        return CreatePrinter.mPrinter;
      } 
      private static class CreatePrinter{ 
        private final static Printer mPrinter = new Printer();
      }
    }
    

    因为静态的单例对象没有作为类的成员变量直接实例化,因此在Printer类加载时并没有实例化mPrinter。第一次调用newInstance() 的时候加载内部类CreatePrinter ,该内部类定义了一个static 类型的变量mPrinter,此时会首先初始化这个变量,由JVM 来保证其线程安全性,确保该成员变量只被实例化一次。

    可见,通过使用这个方法,不仅实现了延迟加载,又可以保证线程安全,不影响系统性能。

    文/千里追风(简书作者)原文链接:http://www.jianshu.com/p/127903ae72b0著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

    相关文章

      网友评论

          本文标题:如何更好的实现一个单例

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