单例模式之懒汉与饿汉
懒汉:在初始化类的时候,不创建唯一的实例,而是等到真正需要用到的时候才创建。必须加上同步,否则有可能依然创建多个实例。
饿汉:在初始化的时候,就创建了唯一的实例,不管是否需要用到。不需要自己加同步,一定产生唯一的实例。
饿汉模式:
饿汉:在初始化的时候,就创建了唯一的实例,不管是否需要用到。不需要自己加同步,一定产生唯一的实例。
static class Singleton {//1.将构造方法设置成私有的private Singleton() {}//2.创建一个静态的类变量private static final Singleton singleton = new Singleton();//3.给外部提供获取单例的方法public static Singleton getInstance() {return singleton;}
懒汉模式:
懒汉:在初始化类的时候,不创建唯一的实例,而是等到真正需要用到的时候才创建。必须加上同步,否则有可能依然创建多个实例。
public class ThreadSingleleton {static class Singleton {//1.无参构造方法private Singleton() {}//2.创建静态的类变量 用于返回参数private static volatile Singleton singleton = null;//3.给外部提供获取单例的方法public static Singleton getInstance() {//双重校验锁if(singleton == null) {synchronized (Singleton.class) {if(singleton == null) {singleton = new Singleton();}}}return singleton;}}
总结:
从上面两个代码来看,由于懒汉模式下,每次获取实例都需要判断,如果使用非常频繁的时候,这种方式性能肯定有所下降。 因此懒汉模式下,不适合使用太频繁的对象。
饿汉是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变而在饿汉模式下,不管是否用到,都会初始化实例。
单例模式之懒汉与饿汉相关推荐
- C#单例模式的懒汉与饿汉
※ 单 例 模 式 单例模式是指某一类在被调用时只能创建一个实例,即只能new一次; ※ 饿 汉 在每次调用的时候都先加载; ※ 懒 汉 调用的时候不加载,需要用到再加载;在多线程调用时不安全; ...
- 【C++】设计模式------单例模式(懒汉和饿汉)
本文参考自<大话设计模式>,想借此记录一下对书本内容的理解,并以自己项目为例子采用C++语言进行举例. 概念 单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点.通俗点讲,在程 ...
- java 单例模式实现懒汉和饿汉
java 懒汉模式: 这种方式它是在内部类里面去创建对象实例.这样的话,只要应用中不使用内部类,JVM就不会去加载这个单例类,也就不会创建单例对象,从而实现懒汉式的延迟加载.也就是说这种方式可以同时保 ...
- 单例模式懒汉、饿汉和登记
转载自 JAVA设计模式之单例模式 本文继续介绍23种设计模式系列之单例模式. 概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记 ...
- 【C++】单例模式(懒汉、饿汉)
1.什么是单例模式? 顾名思义,单例模式就是在这个单例类确保只有一个对象被创建.也就是说这个类只能实例化一个对象. 特征:1.单例类最多只能有一个实例: 2.单例类必须自己创建自己唯一的实例: 3.单 ...
- java 单例模式 懒汉和饿汉
单线程下的单例模式 定义: 确保一个类只有一个实例,并提供一个全局访问点. 单例代码: package wfb.pattern;public class Singleton {private stat ...
- 单例模式的原理/懒汉模式/饿汉模式以及不同版本的单例模式程序
单例模式 单例模式定义 懒汉模式与饿汉模式 懒汉模式 饿汉模式 懒汉模式和饿汉模式的区别 懒汉模式的不同版本 版本一 版本二 版本三 版本四 单例模式定义 保证一个类仅有一个实例,并提供一个该实例的全 ...
- c++实现单例类(懒汉与饿汉)
教科书里的单例模式 我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的 ...
- java单例设计模式懒汉_Java设计模式之单例设计模式(懒汉、饿汉)
[toc] Java设计模式之单例设计模式(懒汉.饿汉) 相信面试过的初中级Java开发的朋友可能都有遇到过单例设计模式的笔试题吧,如果之前没有背下来或者不理解,可以看看下面这篇文章,应该足够应付笔试 ...
最新文章
- 网络编程学习笔记(udp_server函数)
- Sun Solaris 10 bind 9.x DNS 配置
- java 语言章节_2020知到Java语言程序设计章节答案
- 就想问问你们,这种女朋友从哪里来的?
- 【转】图文详解YUV420数据格式
- 【数据结构算法】快排/归并/堆排序 c++
- foreman架构的引入3-安装Foreman1.5.3架构(all-in-one)
- 「镁客·请讲」归墟电子王景阳:以桌面小型机器人切入市场,沿着“机器人+教育”的方向前进...
- hp 服务器 无线网卡,惠普HP 615 无线网卡驱动
- java生成二维码,并在前端展示。
- 三相全控tc787触发电路_开关电源常用的几种保护电路
- 移动端开发-响应式页面
- MySQL--基础知识点--51--dual
- 树莓派64位系统bullseye如何成功安装Qt5
- 怎样去掉Eclipse中的Js错误提示
- 分析全国的教育资源,高校分布数据,发现不均衡
- 安卓下Kindle导入本地电子书的方法
- 基于SSM框架实现的影城票务管理系统【源码+数据库+运行指导视频】
- Worksheet对象应用大全(1)-应用基础
- newmark法 matlab,newmark法和wilson法求解单自由度体系加速度反应谱