多线程单例模式

发布时间:2026/10/17 7:25:04
多线程单例模式 设计模式作用单例模式作用实例new多个实例会报错饿汉模式1.类成员2.构造方法私有懒汉模式区别比较线程不安全时间消耗问题出现场景加锁加锁后的问题阻塞-效率解决指令重排序编译器优化3步 解决volatile面试题1.设计模式设计模式开发中有多个重复的问题场景把这些步骤总结为固定的解决方案应用在开发中。这些解决方案就是设计模式。设计模式可以提升开发效率。设计模式包含单例模式。2.单例模式单例模式一个类在当前进程中只能存在一个实例。多个进程之间无法保证只有一个实例。因为进程之间有独立的存储空间互不影响各个进程维护自己的单例对象。为什么要用到单例模式比如服务器要加载100G的数据到内存中。在代码中有一个类A的构造方法中进行上述的数据加载读硬盘文件把数据加载到内存中那么在一个对象创建好就会消耗100G内存空间。这当然是不可取的所以在应用中有些类只用创建一次就足够了只用new一次即可。但是呢人为因素不可控所以有了单例模式以确保一个进程中某个类中只有一个实例。3.饿汉模式在类加载的时候在方法区生成类对象执行初始化静态变量静态代码块。类加载JVM把.class文件加载到JVM内存上解析这个类1.触发类加载的时机—只要JVM第一次遇到这个类就触发类加载1.程序运行中第一次访问这个类的静态成员2.new这个类的对象3.反射加载这个类4.懒汉模式在类加载时部创建对象在第一次调用getInstance时才new对象。通常认为懒汉模式优于饿汉模式因为如果代码逻辑中不需要创建instance那么就省下了创建instance所用的内存空间。但是懒汉模式会出现线程安全问题。5.懒汉模式下的线程安全问题1.如图在t1执行完后最终进程里还是只有一个instance但是如果new一个对象需要花费10min又或者同一个程序里保存了两份单例对象s2修改数据s1看不到更新的数据造成业务逻辑错乱。2.3.

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询