单例设计模式

  1. 作用: 在应用程序有保证最多只能有一个实例.
  2. 好处:

  2.1 提升运行效率.

  2.2 实现数据共享. 案例:application 对象

    1. 懒汉式

  3.1 对象只有被调用时才去创建.

  3.2  示例代码

3.3由于添加了锁,所以导致效率低.

  1. public class lazySingleton { //懒汉式,单例模式!
  2. //由于对象需要被静态方法调用,把方法设置为static
  3. //由于对象是static,必须要设置访问权限修饰符为private ,
  4. //如果是public 可以直接调用对象,不执行访问入口
  5. private static lazySingleton ourInstance ;
  6. /**
  7. *方法名和类名相同,无返回值.
  8. *其他类不能实例化这个类对象;对外提供访问入口
  9. */
  10.  
  11. private lazySingleton() {
  12. }
  13. /**
  14.  
  15. *实例方法,实例方法必须通过对象调用
  16.  
  17. *设置方法为静态方法
  18. *@return 一个上面的static 对象
  19.  
  20. */
  21. public static lazySingleton getInstance() {
  22. //添加逻辑如果实例化过,直接返回
  23. if(ourInstance==null){
  24. /*
  25. * 多线程访问下,可能出现if 同时成立的情况,添加锁;
  26. 监控这个类下创建一个锁,每次只允许一个class进入;
  27. */
  28. synchronized (lazySingleton.class){
  29. if(ourInstance==null){ //双重验证
  30. ourInstance =new lazySingleton();
  31. }
  32. }
  33. }
  34. return ourInstance;
  35. }
  36.  
  37. }

3.4 测试

  

  1. lazySingleton singleton = lazySingleton.getInstance();
  2. lazySingleton singleton1 = lazySingleton.getInstance();
  3. System.out.println(singleton==singleton1);
  4. System.out.println(singleton);
  5. System.out.println(singleton1);
  6.  
  7. --------------------
  8. true
  9. com.test.lazySingleton@60e53b93
  10. com.test.lazySingleton@60e53b93

4.饿汉式  (IDEA 编译器默认的singleTon)
  解决了懒汉式中多线程访问可能出现同一个对象和效率低问题 ,多个实例共用一个对象!

  1. public class hungerSingleton {
  2. private static hungerSingleton ourInstance = new hungerSingleton();
  3.  
  4. public static hungerSingleton getInstance() {
  5. return ourInstance;
  6. }
  7.  
  8. private hungerSingleton() {
  9. }
  10. }

Spring -11 -单例设计模式 -懒汉式/饿汉式(idea默认的)的更多相关文章

  1. Java 单例设计模式之 饿汉式和懒汉式

    public class InstanceSampleTest { public static void main(String[] args) { /** 单例设计模式的 饿汉式和懒汉式 * 单例模 ...

  2. 设计模式——懒汉式单例类PK饿汉式单例类

    前言 我们都知道生活中好多小软件,有的支持多IP在线,有的仅仅局限于单个IP在线.为什么这样设计,在软件开发阶段就是,有需求就是发展.这就是软件开发的一个设计模式--懒汉式单例类和饿汉式单例类. 内容 ...

  3. Java中单例设计模式,饿汉式和懒汉式

    Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯 ...

  4. Java---15---单例设计模式:---饿汉式和懒汉式

    概念: 单例模式确保某个类仅仅有一个实例.并且自行实例化并向整个系统提供这个实例.   单例模式有下面特点: 1.单例类仅仅能有一个实例 2.单例类必须自己给自己创建自己的唯一实例 3.单例类必须给全 ...

  5. java中的单例模式(懒汉式+饿汉式)

    什么是单例模式: 单例模式既只能在自己本类中创建有且唯一的一个实例(姑且不考虑映射的情况)通过方法将该实例对外公开 第一种:单例模式-懒汉式 既调用getInstance()方法返回实例之前判断有没有 ...

  6. 设计模式课程 设计模式精讲 8-2 单例设计模式-懒汉式及多线程Debug实战

    1 主要内容 1.1 多线程debug 1.2 synchronized同步锁的调用 1.3 懒加载的应用 2 代码演练 2.1 单线程调用 2.2 多线程调用 2.3 锁的调用 1 主要内容 1.1 ...

  7. Java面向对象 Main函数 静态的应用 单例设计模式

     Java面向对象 Main函数 静态的应用与单例设计模式 知识概要             (1)Main函数的细解 (2)静态的应用,静态变量,静态代码块,静态函数 (3)单例设计模式 1.M ...

  8. scala:分别使用懒汉式和饿汉式实现单例模式

    在java中,单例模式需要满足以下要求: 构造方法私有化,使得本类之外的地方不能使用构造方法new出对象 提供私有静态属性,接收单例对象 公共的.静态的getInstance方法,便于外界拿到单例对象 ...

  9. Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?

    什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的. 如果重 ...

随机推荐

  1. 记录一次使用iisnode部署node项目遇到的坑!

    前言:最近因为项目原因,需要在IIS下部署node项目,在此之前,曾经部署过类似的项目,因此在这次部署还算比较顺利,只是在其中遇到了几个比较坑的问题,所以这次使用博客记录下来,如有园友遇到过类似问题, ...

  2. PLSQL Developer 11 使用技巧(持续更新)

    PLSQL Developer 11 使用技巧 (持续更新) 目录(?)[-] 首先是我的颜色配置 常用快捷键 提升PLSQL编程效率 按空格自动替换 关闭Window窗口 PLSQL 实用技巧 TI ...

  3. 爬虫请求库之requests库

    一.介绍 介绍:使用requests可以模拟浏览器的请求,比之前的urllib库使用更加方便 注意:requests库发送请求将网页内容下载下来之后,并不会执行js代码,这需要我们自己分析目标站点然后 ...

  4. Linux+QT界面开发(含数据库)小结

    今天十一国庆节,过了一个很有意义的国庆节,去了龙岗区图书馆,第一次知道了借的书可以在任意分馆归还!这个切实方便了广大读者.针对Linux应用,特意借阅一本:<linux环境下Qt4图形界面与My ...

  5. xorm - Update,乐观锁,更新时间updated,NoAutoTime()

    更新数据使用Update方法 Update方法的第一个参数为需要更新的内容,可以为一个结构体指针或者一个Map[string]interface{}类型. 当传入的为结构体指针时,只有非nil和非0的 ...

  6. 流程审批时执行BE插件

    1.启用审批流时,BE插件解决方案目标框架必须采用.Net Framwork3.5: 2.BE插件相关DLL部署位置:Applicationser/libs.MailServer/libs: 3.BE ...

  7. AS3放大镜工具类

    package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Display ...

  8. [LOJ3048] [十二省联考2019] 异或粽子

    题目链接 LOJ:https://loj.ac/problem/3048 洛谷:https://www.luogu.org/problemnew/show/P5283 Solution 考虑每个子串都 ...

  9. CF778D Parquet Re-laying 构造

    传送门 如果\(2 \not\mid M\),就把两个图折一下,把\(N\ M\)互换,这样就可以保证\(2 \mid M\). 因为操作可逆,所以我们可以选择一个中间状态,把起始和终点状态都变成这个 ...

  10. 记录Quarter的基本使用

    原文:记录Quarter的基本使用 using Quartz; using Quartz.Impl; using Quartz.Impl.Matchers; using Quartz.Logging; ...