单例模式中的懒汉模式和饿汉模式是什么?区别又是什么?
1.懒汉模式:
顾名思义,他是一个懒汉,他不愿意动弹。什么时候需要吃饭了,他就什么时候开始想办法搞点食物。
即懒汉式一开始不会实例化,什么时候用就什么时候new,才进行实例化。
2.饿汉模式:
顾名思义,他是一个饿汉,他很勤快就怕自己饿着。他总是先把食物准备好,什么时候需要吃了,他随时拿来吃,不需要临时去搞食物。
即饿汉式在一开始类加载的时候就已经实例化,并且创建单例对象,以后只管用即可。
3.懒汉式代码实现:
public class Singleton {//默认不会实例化,什么时候用就什么时候newprivate static Singleton instance = null;private Singleton(){}public static synchronized Singleton getInstance(){if(instance == null){//什么时候用就什么时候newinstance = new Singleton();}return instance;}
}
4.饿汉式代码实现:
public class Singleton {//一开始类加载的时候就实例化,创建单实例对象private static Singleton instance = new Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}
}
5.懒汉式和饿汉式的安全和性能区别:
(1) 线程安全:饿汉式在线程还没出现之前就已经实例化了,所以饿汉式一定是线程安全的。懒汉式加载是在使用时才会去new 实例的,那么你去new的时候是一个动态的过程,是放到方法中实现的,比如:
public static synchronized Singleton getInstance(){if(instance == null){//什么时候用就什么时候newinstance = new Singleton();}
如果这个时候有多个线程访问这个实例,这个时候实例还不存在,还在new,就会进入到方法中,有多少线程就会new出多少个实例。一个方法只能return一个实例,那最终return出哪个呢?是不是会覆盖很多new的实例?这种情况当然也可以解决,那就是加同步锁,避免这种情况发生 。
(2)执行效率:饿汉式没有加任何的锁,因此执行效率比较高。懒汉式一般使用都会加同步锁,效率比饿汉式差。
(3)内存使用:饿汉式在一开始类加载的时候就实例化,无论使用与否,都会实例化,所以会占据空间,浪费内存。懒汉式什么时候用就什么时候实例化,不浪费内存。
单例模式中的懒汉模式和饿汉模式是什么?区别又是什么?相关推荐
- 2023-01-26 JS设计模式-单例模式:单例模式的原理和实现,懒汉模式和饿汉模式,单例模式实现登录框
文章目录 1.什么是单例模式? 介绍 特点 结构 2.如何实现一个单例模式? 思路 实现代码 3.单例模式的优缺点 4.懒汉模式和饿汉模式 懒汉模式:一开始不会实例化,什么时候用才new出来实例化 饿 ...
- 大聪明教你学Java设计模式 | 第一篇:单例模式 (懒汉模式和饿汉模式)
前言 大聪明在写代码的过程中发现设计模式的影子是无处不在,设计模式也是软件开发人员在软件开发过程中面临的一般问题的解决方案.大聪明本着"独乐乐不如众乐乐"的宗旨与大家分享一下设计模 ...
- 单例模式的C++实现(懒汉模式和饿汉模式的详细讲解和实现)
文章目录 前言 一.单例模式的概念 1.2单例模式的分类 1.2懒汉和饿汉的利弊 二.代码实现 1.饿汉模式 2.懒汉模式 总结 前言 提示:单例模式的出现.由于在某些场景中你最多而且必须有一个对象存 ...
- C++设计模式--单例模式详解(懒汉模式、饿汉模式、双重锁)
C++设计模式--单例模式详解(懒汉模式.饿汉模式.双重锁) 应用场景 一.单例模式是什么? 二.使用步骤 1.UML图 2.代码实现 应用场景 通常我们在做通讯的时候,我们跟服务器数据交互,假如每次 ...
- C# 设计模式之单例模式(懒汉模式、饿汉模式、静态内部类模式)
C# 设计模式之单例模式(懒汉模式.饿汉模式.静态内部类模式) 应用场景:在整个软件运行生命周期内,一个类只允许一次实例化,例如数据库连接池的连接对象创建:通过使用单例模式来避免反复创建连接对象,从而 ...
- Java 懒汉模式与饿汉模式
懒汉模式与饿汉模式 1.饿汉模式demo 来了就要吃,相当于有现成的- public class EleManSingleton { //1.创建类的唯一实例,使用private static修饰 p ...
- 单例模式---懒汉模式与饿汉模式
单例模式:1)一个类只能创建一个实例2)构造函数和静态变量(加载类时即初始化)需为private3)get方法应该为public static,可供全局访问 //懒汉模式 public class l ...
- 设计模式——单例模式(懒汉模式,饿汉模式)
声明: 本博客参考C语言中文网和优秀博客总结得出: (1)C语言中文网链接 (2)优秀博客链接 单例模式的定义: 指一个类只有一个实例,且该类能自行创建这个实例的一种模式.例如,Windows 中只能 ...
- C++单例模式 : 懒汉模式 与 饿汉模式
单例模式: 只能有一个实例,有懒汉和饿汉区分,实现核心思想: 1.构造函数私有化 2.使用静态函数作为接口来获取类对象 1.懒汉模式: ...
- Scala中简单实现懒汉模式和饿汉模式
在Scala中简单实现单例模式,代码如下: object Test_Singleton {def main(args: Array[String]): Unit = {// 测试是否成功// 懒汉va ...
最新文章
- hssfcolor 不建议使用_POI导出Excel经典实现
- 最小外接矩形思路以及实现
- c#的Marshal
- PHP5.1时间相差8小时问题解决。
- 9月份计算机应用基础统考,2018年9月计算机应用基础统考题库-网考计算机应用基础真题1...
- JavaScript 参考教程——写在前面
- log4net部分配置说明
- javascript 页面跳转大总结
- nodejs 二进制安装
- java中面向对象_java中的面向对象
- android百度地图根据点路线规划,Android 百度地图路径规划一直都是搜索不到结果...
- 神经网络结构可视化工具总结实践大全
- JRTPLib的编译步骤
- 熊海cms v1.0 SQL注入漏洞复现
- macos推荐使用的敲代码软件
- 临时邮箱,20分钟,30分钟,60分钟
- android toast样式 最新,Android 五种不同样式Toast
- UI设计中的“吐司”是什么意思?
- Scala折叠(fold)
- OO ALV简单报表之DOCKING容器实现
热门文章
- 如何在虚拟机安装鸿蒙os,VirtualBox安装教程
- Python学习计划
- 测度论与概率论基础(程士宏)学习笔记(二)
- windows全系1
- 获取计算机关机时间,查询电脑开关机时间的vbs代码
- p1口实验_【正点原子FPGA连载】第二章 实验平台简介-摘自【正点原子】开拓者 FPGA 开发指南...
- 怎样屏蔽掉“网页对话框”
- Opencv实战四 图像匹配
- java 检测usb_如何从android中检测和打印USB打印机
- 大数据技术之Spark入门(一)概述