--- 单例模式 ---

在一些特定情况下,对于我们设计得类我们只想他只能存在一个实例对象,如果是让调用者自己来确认该对象是否创建过然后来判断这个对象能否创建得话是有风险的,所以我们就得在程序的设计上来实现这一操作

饿汉模式

在类的加载时就把这个对象给创建了,就像是个饿了很久的人,看到吃的赶紧去吃了,这个对象的创建也是,看到有资源就赶紧使用来创建了

因为不能让别人能够实例化这个对对象,要将构造方法私有化,然后再这个类中使用一个静态变量创建这个对象,再之后返回这个对象就好

由于这个对象在类加载时就已经创建了,所以在后续调用也时只会有读取没有创建的操作,所以时线程安全的

懒汉模式

懒在计算机种是褒义词,在需要时才创建对于资源的利用率更高,也即是再调用获取对象的时候才实例这个类

再获取这个对象时判断这个对象是否创建了,如果创建了创建了直接返回,若没有的话就创建,但是这有读取也会创建同一个变量再多线程种是不安全的,因为如果有俩个线程同时执行到了这个判断中且他们读取到的s都为null那么这是就创建了俩个对象了,虽然最后还是指挥存在一个,但是如果这个类特别的大的话,那么以下创建这俩个把内存资源吃完了的话这就会是个严重的bug,所以要使用synchronized来给线程上锁,这样就能解决这个问题,但是再之后这个对象创建好了,每次的对象的获取都会上锁,明显时不需要的操作,这样会降低程序的性能,所以再在外面套一层判断,这样再之后对象创建好了之后需要一次判断就能获取到这个对象。

相关推荐
别叫我->学废了->lol在线等7 小时前
python单例模式下线程安全优化
python·安全·单例模式
繁华似锦respect8 小时前
单例模式出现多个单例怎么确定初始化顺序?
java·开发语言·c++·单例模式·设计模式·哈希算法·散列表
while(1){yan}1 天前
JAVA单例模式
java·单例模式
Albert Edison3 天前
【项目设计】C++ 高并发内存池
数据结构·c++·单例模式·哈希算法·高并发
繁华似锦respect3 天前
HTTPS 中 TLS 协议详细过程 + 数字证书/签名深度解析
开发语言·c++·网络协议·http·单例模式·设计模式·https
yoyo君~5 天前
深入理解PX4飞控系统:多线程并发、原子操作与单例模式完全指南
学习·单例模式·机器人·无人机
繁华似锦respect6 天前
C++ 设计模式之单例模式详细介绍
服务器·开发语言·c++·windows·visualstudio·单例模式·设计模式
xunyan62346 天前
面向对象(下)-设计模式与单例设计模式
java·单例模式·设计模式
隔山打牛牛6 天前
单例模式:高效实现全局唯一实例
单例模式
stormsha6 天前
Java 设计模式探秘饿汉式与懒汉式单例模式的深度解析
java·单例模式·设计模式·java-ee