美文网首页
Java中单例模式你用的哪一种?

Java中单例模式你用的哪一种?

作者: 小猎豹_wubangxin | 来源:发表于2017-03-16 15:51 被阅读0次

一起讨论java中的单例模式。单例模式是java设计模式中算是最简单的设计模式了。

* java实现单例模式的写法有很多。你在开发过程中采用的哪一种呢?下面我将写出5种单例模式案例处理。

*

* 第一种:延时加载形式(特点:线程安全,调用效率高。延时加载的)

* 第二种:及时加载形式(特点:线程安全,调用效率不高。及时加载)

* 第三种:双重检测锁形式(特点:及时加载提高调用效率高。由于JVM底层内部结构问题。时不时会出现异常错误.(不建议使用.只是提供学习思路)

* 第四种:静态内部类形式(特点:线程安全,调用效率高,延时加载的 优点:兼容高并发调用)

* 第五种:枚举形式(特点:线程安全,调用效率高,及时加载。最优点:枚举本身就是单例模式,同时JVM底层保障,避免了反射和反序列化的漏洞)

*

代码截图

测试案例代码截图

多线程条件下测试(注意:我这里测试的结果是根据本机的运行环境和条件。不作为标准运行时间。):

测试条件: 开启20个线程循环100000次的 耗时如下

测试结果如下:

// (普通的延时(懒)加载-单例)SingletonMode1运行时常:82

// (普通的及时加载-单例)SingletonMode2运行时常:21

// (双重检测锁形式-单例)SingletonMode3运行时常:56

// (静态内部类形式-单例)SingletonMode4运行时常:60

// (枚举形式-单例)SingletonMode5运行时常:22

总结:

A:单例对象,占用资源少,需要及时加载。枚举形式好于普通的及时加载

B: 单例对象,占用资源大,需要延时加载。静态类部类好于普通的延时加载

注意:第一种到第四中都存在反射和反序列化的漏洞。那面在单例的时候也是可以避免的。

* 但是大多同志都是开发普通的项目不是SDK相关东西的,那么对于反射和反序列化的漏洞可以不要去考虑(个人认为)。

*

* 如果有同志想知道避免反射和反序列化的漏洞 请留言!

相关文章

  • Java中单例模式你用的哪一种?

    一起讨论java中的单例模式。单例模式是java设计模式中算是最简单的设计模式了。 * java实现单例模式的写法...

  • Java四种单例设计模式

    Java中的四种单例模式 单例模式是最容易理解的设计模式之一,介绍Java中单例模式的四种写法。 1.基本单例模式...

  • 单例模式

    JAVA设计模式之单例模式 十种常用的设计模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法...

  • Android 架构5 设计模式之单例模式

    前言 Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,...

  • JAVA多线程之线程安全的单例模式

    概念:java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。单例模式有一...

  • Java几种单例模式的实现

    Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类...

  • Java -- 单例设计模式

    Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类...

  • java的单例模式——其实很简单

    Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类...

  • 单例模式学习

    Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类...

  • 单例模式

    3、单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象...

网友评论

      本文标题:Java中单例模式你用的哪一种?

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