今天看毕老师的线程部分,学到了如何设计延迟加载的单例设计模式;

单例设计模式分两种:

1、饿汉模式

2、懒汉模式

  先上饿汉式代码:

// 饿汉式
class Single{  private static final Single s = new Single();  private Single(){}  public static Single getInstance(){  return s;  }
}  

  饿汉模式,在私有化类的时候就加载了实例,这种模式对资源消耗较大,所以衍生出了懒汉模式;

  接下来懒汉式:

// 懒汉式
class Single{  private static final Single s = null;  private Single(){}  public static Single getInstance(){     // Single 前面加上 synchronized 可以解决安全隐患的问题,但是比较低效  // 使用同步代码块,解决效率问题,由于是静态方法,不能写this,所以“锁”要用  Single.class   if( s == null){  // 使用双重判断,解决效率问题  synchronized(Single.class){  if( s == null ){  s = new Single();  // 对象实例化被延迟
                }  }     }         }
}  

  懒汉式特点:实例会延迟加载。

  存在问题:

  如果多线程访问时,会出现安全隐患;

  解决方法:此时要使用同步代码块包裹实例化代码,但是稍微低效,可以用双重if判断,解决效率问题

  使用的锁:是用该类所属的字节码为对象锁;

转载于:https://www.cnblogs.com/jackchiang/archive/2007/07/12/4585236.html

设计延迟加载的“单例设计模式”相关推荐

  1. java 单例设计_Java 之单例设计模式

    设计模式: 对问题行之有效的解决方式, 其实它是一种思想. 单例设计模式 解决的问题:就是可以保证一个类在内存中的对象唯一性. 即单个实例. 比如对于A 和 B 两个程序使用同一个配置信息对象时, A ...

  2. java设计扑克牌比大小_2019-08-09Day10 单例设计模式,扑克牌比大小游戏(Java)

    目的 学习了解单例设计模式的相关知识,并在前几天Java学习的基础上,完善所学的知识,完成扑克牌比大小的游戏,能实现的功能有,游戏显示页面,玩家信息页面(包括玩家姓名 编号 所持有的资金),生成一副扑 ...

  3. AJPFX关于单例设计模式

    单例设计模式优势:保证一个类在内存中的对象唯一性. 比如:多程序读取一个配置文件时,建议配置文件封装成对象.会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中 ...

  4. 小看--单例设计模式

    (一)单例设计描述 只要了解过设计模式的同学都会知道:单例设计模式,大家都知道单例设计模式是一种创建行的设计模式.既然是创建型,那么先来讲讲,对象的创建的过程吧. --静态成员:静态成员在程序加载的时 ...

  5. GOF设计模式之1:单例设计模式

    1.单例设计模式核心作用: 保证一个类只有一个实例,并且提供了访问该实例的全局访问点 2.常见应用场景: window的任务管理器 项目中读取配置文件一般也是一个单例模式 数据库连接池的设计也是采用单 ...

  6. 详解:设计模式之-单例设计模式

    分享一波:程序员赚外快-必看的巅峰干货 前言 近期预计1-2周左右会更新设计模式专题文章. 单例设计模式:保证在一个JVM中,只能存在一个实例. 应用场景:Servlet,Spring IOC,线程池 ...

  7. static应用知识:单例设计模式

    1.什么是设计模式(Design pattern) 开发中经常遇到一些问题,一个问题通常有n种解法的,但其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式. 设计模式有20多种, ...

  8. C++11标准下的单例设计模式

    单例设计模式 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 为什么会产生设计模式这样的东西呢? 使用设计模式的目的:为了代码可重用性.让代码 ...

  9. Java设计模式—单例设计模式(Singleton Pattern)完全解析

    转载请注明出处:http://blog.csdn.net/dmk877/article/details/50311791 相信大家都知道设计模式,听的最多的也应该是单例设计模式,这种模式也是在开发中用 ...

最新文章

  1. linux系统调用(syscall)原理
  2. CVPR 2021 比CNN和Transformer更好的Backbone?伯克利谷歌提出BoTNet,精度达84.7%
  3. boost::contract模块实现vector的测试程序
  4. linux 测试程序性能,推荐一款Linux系统的性能测试软件
  5. 中科院大学计算机研究生考试大纲,中国科学院大学《计算机原理》2019年硕士研究生入学考试大纲...
  6. Linux源码Kconfig文件语法分析
  7. Oracle的sql开发之包技术实战
  8. LG-Transformer:全局和局部建模Transformer结构新作
  9. linux乱码的文件怎么删除,如何删除Linux的乱码文件
  10. VS2012 ffmpeg 没有定义的lrint
  11. 算法题在我看来都是小意思
  12. 企业信息化之“请纵向排队”
  13. SQLServer之删除用户自定义数据库用户
  14. android json解析歌词,网易云歌词获取
  15. 阿里笔试——北京阿里笔试题总结
  16. Multisim简体中文汉化包下载安装指南
  17. linux 计划任务的使用
  18. html动画页面源码,9款超炫HTML5最新动画源码
  19. 360一键root su浅析
  20. 韩媒批其国民都沉迷“美色” 娱乐产业是起因

热门文章

  1. CPU time与WALL time
  2. y460安装的ubuntu开机时笔记本键盘失效的问题
  3. python调用stanfordNLP的NER接口
  4. 大佬对协程以及try except的详细解释
  5. 布朗语料库中不同部分的情态动词频率直方图绘制的代码详细解释
  6. 华为可以分屏吗_华为手机经常弹出“系统更新”提示,可以不更新吗?看完涨知识了...
  7. 计算机主板硬件术语,电脑硬件扫盲帖---主板术语详解
  8. mysql慢查询检查流程_简单谈谈MySQL优化利器-慢查询
  9. js面向对象-组合使用构造函数模式和原型模式(使用最广泛、认同度最高)
  10. pt-online-schema-change 在线修改表结构