单例模式的代码实现

1.懒汉式代码实现:

public class Singleton {//默认不会实例化,什么时候用就什么时候newprivate static Singleton instance = null;private Singleton(){}public static synchronized Singleton getInstance(){if(instance == null){//什么时候用就什么时候newinstance = new Singleton();}return instance;}
}

2.饿汉式代码实现:

public class Singleton {//一开始类加载的时候就实例化,创建单实例对象private static Singleton instance = new Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}
}

二者的区别:

1.线程安全性

饿汉式在线程还没出现之前就已经实例化了,所以饿汉式一定是线程安全的。懒汉式加载是在使用时才会去new 实例的,那么你去new的时候是一个动态的过程,是放到方法中实现的

2.效率

效率与线程安全性一般成正比
饿汉式没有加任何的锁,因此执行效率比较高。懒汉式一般使用都会加同步锁,效率比饿汉式差。

3.开销

饿汉式在一开始类加载的时候就实例化,无论使用与否,都会实例化,所以会占据空间,浪费内存。懒汉式什么时候用就什么时候实例化,不浪费内存

单例模式中懒汉式和饿汉式实现相关推荐

  1. 关于Java单例模式中懒汉式和饿汉式的两种类创建方法

    一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必须创建 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 单例模式:懒汉式和饿汉式

    所谓单利模式,即只能开启一个线程,只有一个实例,并且能够实现自我实例化,主要分为懒汉式和饿汉式. (1)饿汉式 所谓饿汉式,就好比一个饿汉饿了好久,然后某一天到了餐厅,由于饿了很久,所以进入餐厅就希望 ...

最新文章

  1. 田志刚:智慧的员工,个人知识管理
  2. 用Apache的HTACCESS保护密码
  3. linux系统分配文件夹内存,详解Linux系统内存知识及调优方案
  4. C语言获取mysql表数据结构_【数据结构】实现顺序表(c语言)
  5. 【卷积核设计】Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs
  6. webpack配置说明
  7. 每日一题:leetcode989.数组形式的整数加法
  8. 关于onload的事件权柄以及踩过的坑
  9. MFC关闭对话框可以不析构吗_Win10关闭Defender和防火墙
  10. iocomp iPlot使用说明4 通道对象
  11. 期刊会议的论文,sci,ieee,ccf ,acm等等他们之间的关系,以及如何能看到这些高质量文章
  12. 估值模型不适用_十年十倍!绝对估值法是如何引领巴菲特买入可口可乐的?
  13. 2018全球50大最佳发明名单
  14. 联通HG8347R WO-36光猫 当前用户不允许登录解决办法
  15. 更换CSDN博客皮肤
  16. Tracup|项目经理必备的极客式项目管理工具
  17. 如何注册earthdata账号
  18. (2) [保护模式]段描述符
  19. idea中摸鱼插件_推荐几款我常用的IDEA插件~网友:妈耶~飞起来咯!
  20. 掌握这些电脑知识,你可以玩的很无耻

热门文章

  1. 振动传感开关 震动唤醒功能YTJM-CGQ-16.25vibration sensor参数介绍
  2. handlebar.js使用
  3. 吴恩达机器学习1.2机器学习的定义-----详细笔记及心得
  4. 唯样商城:六种方式教你辨别芯片真伪
  5. spice客户端android,Compile Android Spice(aSpice)
  6. 教你创建一个免费的代理IP池(txt存储版本)
  7. golang 实现nacos获取配置和服务注册-支持集群
  8. 我在培训机构折腾的经历,再和大家聊聊这个行业| 十年系列
  9. EBS:PO_HEADERS_ALL
  10. 记录一下自己编写的”猜拳“小游戏