单例模型

单例模型

定义:保证一个类仅有一个实例,并且提供一个全局访问点

类型:创建型

单例-使用场景

    想确保任何情况下都绝对只有一个实例

 优点

  在内存里只有一个实例,减少了内存开销

 可以避免对资源的多重占用

 设置全局访问点,严格控制访问

缺点 

没有接口,需要扩展代码

单例-懒汉型


懒汉模式是线程不安全的,当两个线程访问,是线程不安全。验证线程不安全 实现Runnable 在Test类运行Tread



使用idea中的debugThread,模式干预线程执行顺序,得知线程是不安全的

避免线程不安全方式

使用synchronized解决此问题 但是synchronized有额外的锁开销。使用doubleCheck方式解决额外的开销


在单例中的单线程下的Double Check的执行


单线程执行 


多线程执行

使用volatile关键字使内存共享,完全解决懒汉模式的线程不安全问题

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.什么是单例 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以...
    维乾阅读 478评论 2 2
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,156评论 1 32
  • 一个简单的单例示例 单例模式可能是大家经常接触和使用的一个设计模式,你可能会这么写 publicclassUnsa...
    Martin说阅读 2,284评论 0 6
  • 1.单例模式概述 (1)引言 单例模式是应用最广的模式之一,也是23种设计模式中最基本的一个。本文旨在总结通过Ja...
    曹丰斌阅读 3,008评论 6 47
  • 概念 确保某一个类只有一个实例,而且自行实例化,并向整个系统提供一个访问它的全局访问点,这个类称为单例类。 特性 ...
    野狗子嗷嗷嗷阅读 565评论 0 2