Java中单例模式—饿汉式和懒汉式
所谓单例模式就是为了确保类在内存中只有一个对象,之所以会出现单例模式是因为,单例模式在系统内存中只存在一个对象,可以节约资源
目录
一、饿汉式
二、懒汉式
一、饿汉式
该方式在开发中是经常用的,因为这个方式不容易出错
程序代码:
package com.hezhiying;public class Main {public static void main(String[] args) {// 创建的这两个对象都是Student类中的sStudent s1 = Student.getStudent();Student s2 = Student.getStudent();System.out.println(s1 == s2);}
}class Student {// 让该方法私有,这样外界就不能访问了private Student() {};// 由于外界不能创建对象,故自己创建一个,为了不让外界修改s的值,故加个privateprivate static Student s = new Student();// 提供一个公共的访问方式,需静态方法,以使类名直接调用,以达到外界能够访问public static Student getStudent() {return s;}
}
运行结果:
二、懒汉式
该方法在开发中不容易用到,但是如果你去找工作,可能会被面试,因为这有个小坑,就是关于多线程的坑,在代码中有注释
程序代码:
package com.hezhiying;public class Main {public static void main(String[] args) {// 创建的这两个对象都是Student类中的sStudent s1 = Student.getStudent();Student s2 = Student.getStudent();System.out.println(s1 == s2);}
}class Student {// 让该方法私有,这样外界就不能访问了private Student() {};// 由于外界不能创建对象,故自己创建一个,为了不让外界修改s的值,故加个privateprivate static Student s = null;// 提供一个公共的访问方式,需静态方法,以使类名直接调用,以达到外界能够访问public synchronized static Student getStudent() {// 在这里,在多线程中可能会在线程一进了if,还没进行创建对象,// 线程二也进来了,这就会导致创建了两个对象,也就不是单例模式了,故需要用synchronizedif (s == null) {s = new Student();}return s;}
}
运行结果:
Java中单例模式—饿汉式和懒汉式相关推荐
- Java中单例模式----饿汉式(HungrySingLeton)和懒汉式(LazySingLeton)
一. 单例模式概述 单例模式(Singleton),也叫单子模式,是一种常用的设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在.许多时候,整个系统只需要拥有一个的全局对象,这样有利于我 ...
- 单例模式饿汉式与懒汉式详解
单例模式饿汉式与懒汉式详解 步骤: 私有构造方法,使得在类的外部不能调用此方法,限制产生多个对象 类初始化时,区分饿汉式与懒汉式的区别 对外部提供调用方法,将创建的对象返回,只能通过类来调用 饿汉式: ...
- Java-Day12 面向对象的三大特征之封装、继承,单例模式(饿汉式、懒汉式)、方法重写 (覆盖)、注解 (annotation)、super关键字、对象的创建流程超详细
目录 1. 面向对象的三大特征之封装 1.1 封装的含义 1.2 封装的目的 1.3 封装的优点 1.4 封装的实现过程 1.5 拓展知识:JavaBean 2. 面向对象的三大特征之继承 2.1 继 ...
- Singleton模式(单例模式) 饿汉式和懒汉式
目的:整个应用中有且只有一个实例,所有指向该类型实例的引用都指向这个实例. 好比一个国家就只有一个皇帝(XXX),此时每个人叫的"皇帝"都是指叫的XXX本人; 常见单例模式类型: ...
- 单例模式——饿汉式和懒汉式
单例模式:一个类只允许存在唯一的对象,并提供它的访问方式 创建思路: 1.禁止在类的外部创建对象:私有化构造函数 2.在类的内部提供唯一的对象:静态成员变量 3.提供访问唯一对象的方法:静态成员函数 ...
- 【学习笔记】【C++整理A】【总】单例模式-饿汉式、懒汉式;
文章目录 一.语言分类: 三.基础A:- 函数重载.默认参数.extern "C".重复包含 1.函数重载 2.默认参数 3.extern "C" 4.防止重复 ...
- 单例模式之饿汉式与懒汉式
常见的单例模式 本文仅讲解单例模式中的饿汉式和懒汉式(双检索) 文章目录 常见的单例模式 前言 一.单例模式的优缺点 二.详解懒汉式.饿汉式 1.饿汉式 2.懒汉式(双检锁) 总结 前言 先来简单的说 ...
- Java实现单例模式之饿汉式、懒汉式、枚举式,带测试。
Java实现单例的3种普遍的模式,饿汉式.懒汉式.枚举式. 具体代码如下: package com.lcx.mode;/*** * 饿汉式单例,不管以后用不用这个对象,我们一开始就创建这个对象的实例, ...
- java学习之单例模式(饿汉式与懒汉式)
---恢复内容开始--- 设计模式:解决某一类问题最行之有效的方法 java中有23种设计模式 今天学习其中一种:单例设计模式:解决一个类在内存只存在一个对象 想要保证对象唯一. 1.为了避免其他程序 ...
最新文章
- Docker 入门系列(3)- Docker 容器(创建、启动、终止、进入、删除、导入、导出容器、容器和镜像转化)
- 手把手教你使用 YOLOV5 训练目标检测模型
- ipad html 自定义裁剪,canvas裁剪clip()函数的具体使用
- 做程序猿的老婆应该注意的一些事情
- router3 BGP2 属性及选路
- python decorator. decorator_Python装饰器(decorator)
- 牛客题霸 [字符串的排列] C++题解/答案
- Linux系统下的几种终端设备文件
- 《Java虚拟机原理图解》1.3、class文件里的訪问标志、类索引、父类索引、接口索引集合...
- Java线程池—ThreadPool简介
- 计算机启动windows程序,win7系统开机自动运行程序怎么设置|win7电脑开机启动程序的方法...
- 【数据库原理】关系-Relationship
- 概率论考点之概率的性质(全概公式及贝叶斯公式)
- PS查看设计图中文字大小,颜色
- matlab级数求和阶乘,(阶乘)数列求和 - 数学 - 小木虫 - 学术 科研 互动社区
- Docker--网络模式
- Python基于深度学习算法实现图书推荐系统项目实战
- epoll 主从反应堆模式代码实现
- 【时序】卷积自注意力 LogSparse Transformer 论文笔记
- 123部奥斯卡影片名称中英文对照
热门文章
- 陶哲轩实分析 命题 7.3.4 (Cauchy 准则) 证明
- 基础管理薄弱服装企业如何实施ERP
- 幸福的源泉:Life is about choices 幸福可以选择
- 墨刀 vs Axure RP
- TCP/UDP通信解疑
- spring 之 BeanPostProcessor
- DevExpress DXperience 的ASPxFilterControl 不显示 Like 菜单的方法
- SPOJ DQUERY 求区间内不同数的个数 主席树
- Oracle用户角色权限管理
- [和管子对话] 2 2007-4-6/抽象类和接口的谁是谁非