两种单例模式对比

作者: 被风扬起的沙 | 来源:发表于2017-03-15 09:26 被阅读88次

第一种

public class Singleton {
    //饿汉式
    private static final Singleton minstance=new Singleton();
    private Singleton(){}
    public static Singleton getInstance(){
        return minstance;
    }
}

我们依赖JVM 在加载这个类时马上创建此唯一的单个实例,JVM 保证在任何线程访问minstance静态变量之前,一定先创建此实例。

第二种:

public class Singleton {
    //静态内部类单例模式   
    private Singleton(){}
    public static Singleton getInstance(){
        return SingletonHolder.mInstance;
    }
    /**
     * 静态内部类
     */
    private static class SingletonHolder{
        private static final Singleton mInstance=new Singleton();
    }
}

当第一次加载 Singleton 类是并不会初始化 mInstance,只有在第一次调用 Singleton 的 getInstance 方法时才会导致 mInstance 被初始化,因此,第一次调用 getInstance 方法会导致虚拟机加载 SingletonHolder 类,这种方式 不仅能够保证线程安全,也能够保证单例对象的唯一性,同时也延迟了单例的实例化,所以这是推荐使用的单例模式实现方式。

个人感觉来说,追求代码简洁的话,第一种感觉比较好一点

相关文章

  • 单例模式

    单例模式(饿汉式) 单例模式(懒汉式) 解决两种的弊端的单例模式(双锁)

  • 单例模式之枚举类enum

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

  • 两种单例模式对比

    第一种 我们依赖JVM 在加载这个类时马上创建此唯一的单个实例,JVM 保证在任何线程访问minstance静态变...

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

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

  • 2019-08-27 java设计模式之单例模式

    1.单例模式概述 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿...

  • Swift的单例模式及如何处理并发访问

    Swift的单例模式 Swift有两种方式实现单例模式 1、全局常量 2、类型常量 处理单例模式的并发访问 1、多...

  • 设计模式(五)单例模式

    引言 Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍两种:懒汉式单例、饿汉式单例 0...

  • C++中线程安全的单例模式(2)

    简介 本文介绍单例模式实现的另外两种方法: 通过double check(借助std::atomic)实现单例模式...

  • 单例模式

    单例模式 单例模式分为两种:饿汉式 和 懒汉式。 参考:知乎-如何学习设计模式?[https://www.zhih...

  • Python经典面试题21道

    1、Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模...

网友评论

    本文标题:两种单例模式对比

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