单例模式之饿汉式单例模式

单例模式三要素:
1、私有的静态属性,这主要是为了存储类唯一的实例
2、公共的静态方法,这主要是为了提供给外键生成获取单例的方法
3、用于限制类再次实例话的措施。一般会私有化类的构造方法。

饿汉式单例模式
在类加载过程中就直接创建单例。代码如下:

public class HungrySingleton {private HungrySingleton() {}private static final HungrySingleton hungrySingleton=new HungrySingleton();public static HungrySingleton getInstance(){return hungrySingleton;}
}

饿汉式单例模式的优缺点:
优点:
1、不需要加锁就能保证线程安全
2、类加载时就创建好了,这样程序执行效率高。性能高

缺点:
1、正是因为类加载时就已经创建好了,无论是否使用都已经创建好了,所以会浪费一定的内存。如果一个程序有大量的饿汉式单例模式,那么在类加载时,会同时创建大量单例,会浪费硬件资源。
2、可以通过反射,创建不同的实例对象。

以下是通过反射破坏单例模式的例子:

public class HungrySingletonTest {public static void main(String[] args) {/*        Thread t1=new Thread(new SingletonThread());Thread t2=new Thread(new SingletonThread());*//*   t1.start();t2.start();*///通过反射破坏单例模式try {Class<?> clazz = HungrySingleton.class;Constructor c = clazz.getDeclaredConstructor(null);c.setAccessible(true);Object instance1 = c.newInstance();Object instance2 = c.newInstance();System.out.println(instance1);System.out.println(instance2);} catch (Exception e) {e.printStackTrace();}}
}

结果如下:

com.example.singleton.hungry.HungrySingleton@2f2c9b19
com.example.singleton.hungry.HungrySingleton@31befd9f

单例模式之饿汉式单例模式相关推荐

  1. Spring框架学习day_01: 框架配置方式/ 管理对象的作用域/ 生命周期/ 组件扫描/ 单例模式:“懒汉式“,“饿汉式“

    1. Spring框架的作用 Spring框架的主要作用是创建对象和管理对象. 创建对象:类似于User user = new User(); 管理对象:随时可以通过Spring框架获取对象,甚至Sp ...

  2. 单例模式可以分为懒汉式和饿汉式:     懒汉式单例模式:在类加载时不初始化。     饿汉式单例模式:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。

     单例模式可以分为懒汉式和饿汉式: 懒汉式单例模式:在类加载时不初始化. 饿汉式单例模式:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快.

  3. ESP-IDF:懒汉式和饿汉式单例模式测试代码

    ESP-IDF:懒汉式和饿汉式单例模式测试代码 /单例模式测试/ /懒汉式/ class singleton_lazy { private: singleton_lazy(){}; public: s ...

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

    饿汉式单例模式 GiantDragon 应该只有一只,通过私有化其构造方法,使得外部无法通过new 得到新的实例. GiantDragon 提供了一个public static的getInstance ...

  5. 单例模式:饿汉式vs懒汉式

    单例模式是指,在代码运行时,保证某一个类只能被创建一个对象,不可以被创建第二次对象. 饿汉式: 1.先将类中的构造器私有化,用private修饰,防止在外界创建对象 例: private Test() ...

  6. 设计模式之单例模式(饿汉式,懒汉式)

    饿汉式单例模式 public class Singleton1{/**一开始就创建了一个实例**/private static Singleton1 instance = new Singleton1 ...

  7. 单例模式(饿汉式和懒汉式)

    以前学习单例的时候,只理解了简单部分.这次看DRP,对单例的饿汉式和懒汉式有了一些认识和对比. 在实际的开发中,有些地方需要一个类只有一个实例.比如:网站在线人数的计数器,再比如IDE中的工具箱之类的 ...

  8. java单例模式(饿汉式和懒汉式的几种不同写法)

    1.饿汉式(直接创建)三种创建方法代码里面都有 第三种静态代码块方式,需要创建个properties文件 package java2;import java.io.IOException; impor ...

  9. Java实现单例模式之饿汉式、懒汉式、枚举式,带测试。

    Java实现单例的3种普遍的模式,饿汉式.懒汉式.枚举式. 具体代码如下: package com.lcx.mode;/*** * 饿汉式单例,不管以后用不用这个对象,我们一开始就创建这个对象的实例, ...

最新文章

  1. iOS学习笔记(十三)——获取手机信息(UIDevice、NSBundle、NSLocale)
  2. 笔记-信息系统安全管理-网络安全工具
  3. html表单中get与post之间的区别
  4. python standardscaler_定制便携python工具箱
  5. React Hooks 实现和由来以及解决的问题
  6. Atitit 知识图谱管理 谱存储选型 与查询 目录 1. 知识图谱存储系统的选型。 1 1.1. 图数据库 neo4j 适合大规模数据 1 1.2. 关系数据库 小规模 2 2. 知识图谱查询语言
  7. Flutter 扩展NestedScrollView (二)列表滚动同步解决
  8. 达梦数据库DM8企业版--命令行方式的安装、创建数据库和注册服务
  9. 如何一个月左右拿下PAT甲级(浙大机试)满分
  10. 2022年日历表电子版打印版
  11. 生活小技巧:自己动手修理希捷 Expansion 移动硬盘
  12. 【Python学习】sklearn层次聚类
  13. 计算机教育课题申请报告,课题结项申请报告
  14. 【趣题】几堆石子轮流捡,谁捡到最后的石子算输的游戏
  15. 硬件测试的思考和改进:有道词典笔的高效测试探索
  16. 如何写出自媒体10W+爆文?
  17. 维特根斯坦思想概述南京大学陈亚军
  18. Android 编译 Jack简介
  19. springBoot整合SqlSessionTemplate使用
  20. 通达信股票的量化分析模型的公式

热门文章

  1. 720度全景带你vr云游景区,vr云游感受和应用介绍
  2. i3-10110U和i5 1035g7 哪个好
  3. Simple polygon
  4. 男导师的妻子叫“师母”,那女导师的丈夫该怎么称呼?
  5. quartz定时器时间设置规则
  6. iptable使用笔记
  7. 达梦数据库DW集群部署搭建流程步骤说明
  8. 杭州某公司福禄克FLUKE DTX-SFM2单模模块-修复案例
  9. 小红书KOC和KOL这两者怎样进行投放?
  10. liquibase介绍与使用