Singleton 单例模式(懒汉方式和饿汉方式)单例模式的概念:
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。关键点:
1)一个类只有一个实例 , 这是最基本的
2)它必须自行创建这个实例
3)它必须自行向整个系统提供这个实例
--------------------------------------------------------------------------两种实现方式:1  懒汉模式(类加载时不初始化)
【懒----不先实例化(随用随时吃)------获取对象慢---考虑同步和非空,用的时候才实例化。】
package Singleton;public class LazySingleton {//懒汉式单例模式//比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢private static LazySingleton intance = null;//静态私用成员,没有初始化private LazySingleton(){//私有构造函数}public static synchronized LazySingleton getInstance()    //静态,同步,公开访问点{if(intance == null){intance = new LazySingleton();}return intance;}
}关键点:(代码注释上已给出)1)构造函数定义为私有----不能在别的类中来获取该类的对象,只能在类自身中得到自己的对象2)成员变量为static的,没有初始化----类加载快,但访问类的唯一实例慢,static保证在自身类中获取自身对象3)公开访问点getInstance: public和synchronized的-----public保证对外公开,同步保证多线程时的正确性(因为类变量不是在加载时初始化的)优缺点见代码注释。2  饿汉式单例模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快)
【饿------类加载时先实例化(怕吃的晚没得吃)-----获得对象快】package Singleton;public class EagerSingleton {//饿汉单例模式//在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快private static EagerSingleton instance = new EagerSingleton();//静态私有成员,已初始化private EagerSingleton() {//私有构造函数}public static EagerSingleton getInstance()    //静态,不用同步(类加载时已初始化,不会有多线程的问题){return instance;}}关键点:(代码注释已写)1)私有构造函数2)静态私有成员--在类加载时已初始化3)公开访问点getInstance-----不需要同步,因为在类加载时已经初始化完毕,也不需要判断null,直接返回&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7
单例设计模式保证一个类在内存中只能有一个对象。思路:1)如果其他程序能够随意用 new 创建该类对象,那么就无法控制个数。因此,不让其他程序用 new 创建该类的对象。2)既然不让其他程序 new 该类对象,那么该类在**自己内部**就要创建一个对象,否则该类就永远无法创建对象了。3)该类将创建的对象**对外(整个系统)提供**,让其他程序获取并使用。饿汉式:一上来我就把对象给你 new 好了,你来了直接就可以拿去“吃”了懒汉式(要是有人问单例的延迟加载方式指的就是这种方式)一开始我就不给你 new 对象,你来找我,我在给你创建一个对象懒汉式有一个缺点,就是在多线程中使用的时候,可能会创建多个实例对象,比如,线程1来调用 getInstance() 方法,判断了 s==null,然后线程1由于未知的原因阻塞了,线程2再来调用 getInstance() 方法,判断 s==null ,线程2就创建了一个对象,这时候线程1又运行了,那么线程1就会创建一个对象~这样就会造成多个对象~懒汉式的线程优化——加一个同步锁饿汉式和懒汉式的区别:1)饿汉式是空间换时间,懒汉式是空间换时间。2)在多线程访问的时候,懒汉式可能会创建多个对象,而饿汉式不会

单例模式【饿汉模式和懒汉模式异同点】相关推荐

  1. 单例模式的C++实现(懒汉模式和饿汉模式的详细讲解和实现)

    文章目录 前言 一.单例模式的概念 1.2单例模式的分类 1.2懒汉和饿汉的利弊 二.代码实现 1.饿汉模式 2.懒汉模式 总结 前言 提示:单例模式的出现.由于在某些场景中你最多而且必须有一个对象存 ...

  2. 单例模式(饿汉实现、懒汉实现)

    目录 (MS) 1. 饿汉实现 2.  懒汉模式 ① 单线程版本 ② 线程安全版 ③ 线程安全改进版⼀ 以上存在线程安全问题. ④ 线程安全改进版⼆ 以上存在线程安全问题,对象创建需要三步: ⑤ 线程 ...

  3. 【设计模式】之单例模式中的饿汉模式和懒汉模式

    本文内容:什么是单例模式,单例的作用,饿汉模式,懒汉模式的安全与非安全的实现,饿汉模式与懒汉模式的区别. 什么是单例模式? 单例模式:保证一个类,仅有一个实例.提供一个访问它的全局访问点. 单例的作用 ...

  4. 单例模式饿汉模式与懒汉模式

    目录 1.什么是单例模式 2.为什么需要单例模式? 3.如何实现单例模式 3.1饿汉方式 3.2懒汉模式 1.什么是单例模式 单例模式是一种设计模式,单例模式能保证某个类在程序中只存在唯一一份实例, ...

  5. java设计模式之单例模式|单例模式之饿汉模式、懒汉模式、枚举方式|最详细的6种懒汉模式详解

    目录 一.单例模式 二.饿汉模式和懒汉模式 1.饿汉模式,线程安全 2.懒汉模式 懒汉模式1,线程不安全(不常用) 懒汉模式2,线程安全(不常用) 懒汉模式3,线程安全,双重校验(不常用) 懒汉模式4 ...

  6. 单例模式——饿汉模式懒汉模式

    目录 一.什么是单例模式? 二.单例模式的应用场景 三.两种典型的方式实现单例模式 1.饿汉模式 2.懒汉模式 3.理解懒汉模式和饿汉模式 四.单例模式和线程的关系 1.饿汉模式是否线程安全? 2.懒 ...

  7. 单例模式的具体实现(包含饿汉模式和懒汉模式)

    什么是单例模式? 确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 首先要建立这个实例: class Factory{public string Name { get; set; }p ...

  8. Singleton模式(单例模式) 饿汉式和懒汉式

    目的:整个应用中有且只有一个实例,所有指向该类型实例的引用都指向这个实例. 好比一个国家就只有一个皇帝(XXX),此时每个人叫的"皇帝"都是指叫的XXX本人; 常见单例模式类型: ...

  9. Java多线程案例——单例模式(恶汉模式和懒汉模式)

    一,什么是单例模式 单例顾名思义指的是单个实例对象(所以单例模式要求构造方法私有化才能保证在类外不能创建该类的实例化对象):在有的场景中,不应该创建多个对象时就应该使用单例模式,一旦使用了单例模式,此 ...

  10. 单例模式 (饿汉、懒汉)

    单例模式 定义 单例模式的实现 饿汉模式 懒汉模式 线程安全问题分析: 如何解决线程安全问题?? 关键点总结 定义 单例模式,是一种常见的"设计模式" 设计模式: 设计模式是一套经 ...

最新文章

  1. 数据结构与算法--绪论
  2. 新方案-eclipse配置tomcat中文乱码另一种解决方案
  3. 知乎高赞回答:走上科研之路,需要培养什么能力?怎样培养这些能力?
  4. 图解yolo目标检测如何进行运动估计
  5. lesson4-Qt窗口
  6. jvm简单笔记(3)
  7. 【学术相关】2020年AI领域有哪些让人惊艳的研究?
  8. x86汇编从实模式到保护模式-程序加载器
  9. SpringBoot_入门-课程简介
  10. jquery判断元素是否包含某class
  11. 不是有效的函数或过程名_过程和函数
  12. 解决物体位姿估计中遮挡、对称、无纹理物体的方法
  13. android 折叠式布局,Android卡片式折叠交互效果
  14. 批处理 备份网络数据
  15. 全球及中国基因组学软件行业发展动态及前景趋势预测报告(2022-2027)
  16. FAT和FAT32文件系统的原理
  17. uiautomatorviewer 简单使用
  18. php sapi模式,PHP SAPI介绍
  19. rw_semaphore 原理与代码分析
  20. Java基础面试题简单总结

热门文章

  1. 飘动图片广告html代码,基于JavaScript代码实现随机漂浮图片广告
  2. 实验用USB转RS-232下载线制作
  3. Linux中ffmpeg批量压缩音频
  4. 在计算机知识post的含义,计算机术语POST是指的什么意思?
  5. linux 磁带机备份是否完成,Linux环境下磁带机的直接备份操作
  6. Windows10 adb安装与环境变量配置
  7. visual studio 2017 installer 安装包制作过程出现的问题---无法注册模块 HRESULT -2147024769 请与您的技术支持人员联系...
  8. Java Web目前主流的框架以及正在兴起的框架
  9. java项目(一) ——家庭收支记账系统
  10. 管家婆单机版_安稳之托 祝福管家婆软件25周年