一. 什么是单例模式

因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。

二. 单例模式的特点

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单例模式中懒汉式和饿汉式的两种类创建方法相关推荐

  1. java单例模式之懒汉式与饿汉式

    首先我们介绍一下单例模式 单例类是只有一个实例对象: 该单例对象必须由单例类自行创建: 单例类对外提供一个访问该单例的全局访问点. 单例模式的优点 单例模式可以保证内存里只有一个实例,减少了内存的开销 ...

  2. JAVA单例模式:懒汉式,饿汉式

    今天复习了一下java的单例模式,写了懒汉式和饿汉式的实现例子.代码如下: 1.懒汉式单例 package com.lf.shejimoshi;/*** @classDesc: 类描述:(懒汉式单例测 ...

  3. 单例模式中懒汉式和饿汉式的区别区别在哪?

    一.单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.所谓单例就是在系统中只有一个该类的实例,或者说 ...

  4. 单例模式中懒汉式和饿汉式实现

    单例模式的代码实现 1.懒汉式代码实现: public class Singleton {//默认不会实例化,什么时候用就什么时候newprivate static Singleton instanc ...

  5. 经典案例:单例模式之懒汉式和饿汉式

    单例模式之懒汉式和饿汉式 文章目录 单例模式之懒汉式和饿汉式 一.单例模式是什么? 二.几种单例模式 1.懒汉模式 2.饿汉模式 三.懒汉模式和饿汉模式的区别 一.单例模式是什么? 保证整个系统中一个 ...

  6. java中的单例模式:懒汉式和饿汉式和静态内部类的书写

    饿汉式: public class SingleTon {//1.私有化构造器private SingleTon(){}//2.在类内部创建一个对象private static SingleTon i ...

  7. 单例模式之懒汉式和饿汉式

    目录 单例模式 懒汉式和饿汉式 懒汉式: 默认不会实例化,用的时候 new 饿汉式代码实现: 懒汉式和饿汉式区别: 懒汉模式: 饿汉模式: 执行效率上: 性能上: 单例模式 特点 : 只产生一个实例 ...

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

    单例模式 所谓单例模式,就是保证类在内存中只有一个对象 而如何保证类在内存中只有一个对象? 思考一下,我们平时在实例化类的对象时,基本都是通过new 的方式来实例化一个对象,其实说白了,就是调用了需要 ...

  9. 单例模式的懒汉式和饿汉式的线程安全问题

    单例模式一般有两种形式:懒汉式和饿汉式. 饿汉式是线程安全的,它的基本实现代码如下: public class SingletonTest1 {public static void main(Stri ...

最新文章

  1. MS SQL Server和MySQL区别
  2. NLP为RPA带来了什么价值?
  3. 为什么要选择Apache Pulsar(一)
  4. 画出该lti系统的幅频特性响应曲线_模拟电路-放大电路的频率响应
  5. JUC多线程:JMM内存模型与volatile内存语义
  6. MYSQL数据库导入出错:#1046 - No database selected
  7. 《SpringBoot从菜鸟到老鸟》之SpringBoot 如何配置全局的异常捕获
  8. mysql主从复制、读写分离到数据库水平拆分及库表散列
  9. BZOJ2938:[Poi2000]病毒
  10. layui 解决浏览器自动填充form表单账号和密码输入框的问题
  11. docker 中文文档_Kubernetes将弃用Docker,不必恐慌
  12. 中心极限定理_中心极限定理的的原理与应用
  13. 刚毕业就年薪百万,谁说知识不是财富
  14. bootcamp opencore_黑苹果(Hackintosh)BootCamp 使用教程
  15. linux安装安卓fastboot,Android的fastboot协议
  16. Masscan使用教程.
  17. java 三次样条插值_java – 三次样条插值的正确实现
  18. 网页设计专家票选的16款常用英文字体
  19. QQ浏览器微信版抢先玩!变QQ微信电脑版
  20. MQTT客户端软件(MQTT.fx)的使用详解

热门文章

  1. wordpress直接处理$_post_实战:Drupal迁移到WordPress
  2. python html解析对比_python htmlparse页面解析示例
  3. ubuntu ftp服务器_如何在Ubuntu上安装FTP服务器?
  4. csv解析java_Java CSV解析器
  5. primefaces教程_Primefaces Spring和Hibernate集成示例教程
  6. 最近很多面试都是考研凉凉的,心塞!
  7. Angular5--viewChild/viewChildren、contentChild/contentChildren使用规则小结
  8. stringstream 字符串的格式化数据提取
  9. 特朗普网络安全行政令实施情况如何?
  10. 【转】 TechED2010与我(三) —— 初识云计算