关于Java单例模式中懒汉式和饿汉式的两种类创建方法
一. 什么是单例模式
因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。
二. 单例模式的特点
1. 单例模式只能有一个实例。
2. 单例类必须创建自己的唯一实例。
3. 单例类必须向其他对象提供这一实例。
三.单例模式的实现
1.懒汉式
//懒汉式:类内实例对象创建时并不直接初始化,知道第一次调用方法才完成初始化操作
public class LazySingle {//创建私有构造方法private LazySingle(){}//创建静态的该类实例对象private static LazySingle instance = null;//创建对外开放的静态方法提供实例对象public static LazySingle getInstance(){if(instance==null){instance = new LazySingle();}return instance;}
}
懒汉式的单例模式创建方法可能在多线程(并发)的实现中带来很多安全隐患。
2.饿汉式
//饿汉式:创建对象实例的时候直接初始化
public class HungrySingle {//创建类中私有构造private HungrySingle(){}//创建该类型的私有静态实例private static HungrySingle instance = new HungrySingle();//创建共有静态方法返回静态实例对象public static HungrySingle getInstance(){return instance;}
}
转载于:https://www.cnblogs.com/ygxdbmx/p/9740388.html
关于Java单例模式中懒汉式和饿汉式的两种类创建方法相关推荐
- java单例模式之懒汉式与饿汉式
首先我们介绍一下单例模式 单例类是只有一个实例对象: 该单例对象必须由单例类自行创建: 单例类对外提供一个访问该单例的全局访问点. 单例模式的优点 单例模式可以保证内存里只有一个实例,减少了内存的开销 ...
- JAVA单例模式:懒汉式,饿汉式
今天复习了一下java的单例模式,写了懒汉式和饿汉式的实现例子.代码如下: 1.懒汉式单例 package com.lf.shejimoshi;/*** @classDesc: 类描述:(懒汉式单例测 ...
- 单例模式中懒汉式和饿汉式的区别区别在哪?
一.单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.所谓单例就是在系统中只有一个该类的实例,或者说 ...
- 单例模式中懒汉式和饿汉式实现
单例模式的代码实现 1.懒汉式代码实现: public class Singleton {//默认不会实例化,什么时候用就什么时候newprivate static Singleton instanc ...
- 经典案例:单例模式之懒汉式和饿汉式
单例模式之懒汉式和饿汉式 文章目录 单例模式之懒汉式和饿汉式 一.单例模式是什么? 二.几种单例模式 1.懒汉模式 2.饿汉模式 三.懒汉模式和饿汉模式的区别 一.单例模式是什么? 保证整个系统中一个 ...
- java中的单例模式:懒汉式和饿汉式和静态内部类的书写
饿汉式: public class SingleTon {//1.私有化构造器private SingleTon(){}//2.在类内部创建一个对象private static SingleTon i ...
- 单例模式之懒汉式和饿汉式
目录 单例模式 懒汉式和饿汉式 懒汉式: 默认不会实例化,用的时候 new 饿汉式代码实现: 懒汉式和饿汉式区别: 懒汉模式: 饿汉模式: 执行效率上: 性能上: 单例模式 特点 : 只产生一个实例 ...
- 单例模式(懒汉式和饿汉式区别)
单例模式 所谓单例模式,就是保证类在内存中只有一个对象 而如何保证类在内存中只有一个对象? 思考一下,我们平时在实例化类的对象时,基本都是通过new 的方式来实例化一个对象,其实说白了,就是调用了需要 ...
- 单例模式的懒汉式和饿汉式的线程安全问题
单例模式一般有两种形式:懒汉式和饿汉式. 饿汉式是线程安全的,它的基本实现代码如下: public class SingletonTest1 {public static void main(Stri ...
最新文章
- MS SQL Server和MySQL区别
- NLP为RPA带来了什么价值?
- 为什么要选择Apache Pulsar(一)
- 画出该lti系统的幅频特性响应曲线_模拟电路-放大电路的频率响应
- JUC多线程:JMM内存模型与volatile内存语义
- MYSQL数据库导入出错:#1046 - No database selected
- 《SpringBoot从菜鸟到老鸟》之SpringBoot 如何配置全局的异常捕获
- mysql主从复制、读写分离到数据库水平拆分及库表散列
- BZOJ2938:[Poi2000]病毒
- layui 解决浏览器自动填充form表单账号和密码输入框的问题
- docker 中文文档_Kubernetes将弃用Docker,不必恐慌
- 中心极限定理_中心极限定理的的原理与应用
- 刚毕业就年薪百万,谁说知识不是财富
- bootcamp opencore_黑苹果(Hackintosh)BootCamp 使用教程
- linux安装安卓fastboot,Android的fastboot协议
- Masscan使用教程.
- java 三次样条插值_java – 三次样条插值的正确实现
- 网页设计专家票选的16款常用英文字体
- QQ浏览器微信版抢先玩!变QQ微信电脑版
- MQTT客户端软件(MQTT.fx)的使用详解
热门文章
- wordpress直接处理$_post_实战:Drupal迁移到WordPress
- python html解析对比_python htmlparse页面解析示例
- ubuntu ftp服务器_如何在Ubuntu上安装FTP服务器?
- csv解析java_Java CSV解析器
- primefaces教程_Primefaces Spring和Hibernate集成示例教程
- 最近很多面试都是考研凉凉的,心塞!
- Angular5--viewChild/viewChildren、contentChild/contentChildren使用规则小结
- stringstream 字符串的格式化数据提取
- 特朗普网络安全行政令实施情况如何?
- 【转】 TechED2010与我(三) —— 初识云计算