美文网首页
单例推荐的几种创建方法

单例推荐的几种创建方法

作者: LiteWood | 来源:发表于2017-12-22 15:53 被阅读0次

第一种(静态内部类):

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

第二种(枚举)

public class EnumSingleton{
    private EnumSingleton(){}
    public static EnumSingleton getInstance(){
        return Singleton.INSTANCE.getInstance();
    }
    
    private static enum Singleton{
        INSTANCE;
        private EnumSingleton singleton;
        //JVM会保证此方法绝对只调用一次
        private Singleton(){
            singleton = new EnumSingleton();
        }
        public EnumSingleton getInstance(){
            return singleton;
        }
    }
}

第三种(双重校验锁) //JDK 1.5之后,双重检查锁才能达到正常的单例效果(1.5之前volatile 关键字使用有问题)

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

相关文章

  • 单例推荐的几种创建方法

    第一种(静态内部类): 第二种(枚举) 第三种(双重校验锁) //JDK 1.5之后,双重检查锁才能达到正常的单...

  • python面试题2

    python对象创建的过程python实现单例的几种方法@classmethod, @staticmethod用生...

  • 记录一次电话面试

    1.自我介绍这个是必须的吧问:单例的优缺点创建单例的方法多线程使用的场景,方法, 你用过那几种?YYkit源码的分...

  • 单例创建的几种方法

    方法一、(官方版) 这个方法为苹果公司官方的方法; 解释: [[Class alloc] init];其实是做了两...

  • Swift-5行代码创建单例

    创建单例的方法

  • 单例模式、异常、模块

    单例模式 创建单例-保证只有1个对象 创建单例时,只执行1次init方法 目的 —— 让 类 创建的对象,在系统中...

  • iOS 创建单例的方法

    iOS 创建单例的方法 方法一: 方法二:

  • 懒加载和单例

    懒加载 声明属性 重写get方法 Swift 单例的创建方式 方式一:创建单例工厂方法(重写alloc完善) 声明...

  • ios 确保单例对象的唯一性

    之前创建单例是使用下面的方式: 这种方式创建的单例,如果外部使用了alloc方法来创建实例,或者copy方法拷贝了...

  • swift 单例

    创建单例类 掉用方法

网友评论

      本文标题:单例推荐的几种创建方法

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