美文网首页
单例模式实现对比

单例模式实现对比

作者: Jimmy_gjf | 来源:发表于2018-05-22 14:50 被阅读23次

参考链接: 单例模式

一、实现对比

推荐指数 实现方式 多线程安全 Lazy初始化 实现难度 内存消耗 执行效率 JDK版本
**** 枚举 1.5+
**** 饿汉式 -
*** 静态内部类 一般 -
** 双检锁/双重校验锁(DCL) 复杂 1.5+
* 懒汉式(非线程安全) -
* 懒汉式(线程安全) 极低 -

二、实现方式

懒汉式(非线程安全)

public class Singleton {  
    private static Singleton instance;  
    private Singleton (){}  
  
    public static Singleton getInstance() { 
       if (instance == null) {  
           instance = new Singleton();  
       } 
       return instance;  
    }  
}  

懒汉式(线程安全)

    public class Singleton {  
        private static Singleton instance;  
        private Singleton (){}  
        
        public static synchronized Singleton getInstance() {  
               if (instance == null) {  
                   instance = new Singleton();  
               }  
               return instance;  
        }  

[推荐] 饿汉式

    public class Singleton {  
        private static Singleton instance = new Singleton();  
        private Singleton (){} 
         
        public static Singleton getInstance() {  
               return instance;  
        }  
    }

Classloder机制避免了多线程的同步问题

双检锁/双重校验锁(DCL)

    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;  
        }  
    } 

[推荐] 静态内部类

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

Classloder机制避免了多线程的同步问题

[推荐] 枚举

    public enum Singleton {  
        INSTANCE; 
         
        public static Singleton getInstance() {
            return INSTANCE;
        }

        public void method() {  
        }  
    }  

相关文章

  • 单例模式的常用实现方式

    单例模式属于最常用的设计模式,Java中有很多实现单例模式的方式,各有其优缺点 实现方式对比 单例实现方式线程安全...

  • 单例模式实现对比

    参考链接: 单例模式 一、实现对比 二、实现方式 懒汉式(非线程安全) 懒汉式(线程安全) [推荐] 饿汉式 Cl...

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • python面试题-2018.1.30

    问题:如何实现单例模式? 通过new方法来实现单例模式。 变体: 通过装饰器来实现单例模式 通过元类来创建单例模式...

  • 单例模式

    一、实现单例模式 或者 二、透明的单例模式 三、用代理实现单例模式 四、JavaScript中的单例模式 在Jav...

  • 单例模式和GCD单例实现

    1、传统单例模式2、GCD单例模式3、用宏实现GCD单例模式4、用宏实现GCD单例模式,名称随类名变化而变化 单例...

  • kotlin实现单例模式

    1.懒汉式实现单例模式 2.线程安全懒汉式实现单例模式 3.双重校验懒汉式实现单例模式 4.静态内部类方式实现单例模式

  • 单例模式之枚举类enum

    通过枚举实现单例模式 枚举类实现单例模式的优点 对于饿汉式单例模式和懒汉式单例模式了解的同学,使用以上两种单例模式...

  • 单例模式

    单例模式及C++实现代码单例模式4种实现详解 c++11改进我们的模式之改进单例模式 单例模式(Singleton...

  • 单例模式

    饿汉模式: 懒汉模式: Double CheckLock(DCL)实现单例 静态内部类实现单例 枚举单例 使用容器...

网友评论

      本文标题:单例模式实现对比

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