单例设计模式:一个类中只有一个对象的情况
思路:
- 将构造函数私有化 è 不能创建对象
- 在本类中创建一个对象
- 让对象对外提供一个方法,即建立一个方法对外可以获取该对象
class Student 恶汉式:先初始化对象(开发多用) { //私有构造函数,让其不能创建对象 Student() {} //创建一个最终对象 private static Student student=new Student(); //提供公共方法,让其可以获取这个对象 public static Student sigleStudent() { //一进内存就已经创建对象 return student; } }
class Student // 对象是方法调用才建立也叫做对象的延时加载————-懒汉式 { //私有构造函数,让其不能创建对象 Student() {} //创建一个最终对象 private static Student student = null; //提供公共方法,让其可以获取这个对象 public static Student sigleStudent() { Synchronized if (student==null) { student=new Student(); } return student; //student进内存时,对象还没有存在,只有调用getInstance时,才建立对象 } }
单例模式在多线程下的应用:
class Student { private static Student s=null; private Student(){} //私有构造函数,让其不能创建对象 public static Student getInstance() { if (s==null) { synchronized (Student.class) { if (s==null) { s=new Student(); } } } return s; } }
由图可以看出:
注意点:同步函数被静态修饰后,使用的锁是类名.class(字节码),
1、静态进内存时,内存中无本类对象
2 、静态方法中不可以定义this、super等关键字作为锁对象,但是可以采用该类的字节码,该字节码也是 一个对象,而且唯一,字节码后期学习反射就可以知道。
总结:懒汉式在多线程下是多么的低效,故我们在开发中尽量采用饿汉式单例模式。
相关推荐
在各种必须要满足的约束条件之下,设计出一个最简化的架构是架构师孜孜不倦追求的目标。幸运的是,经过国外高水平的Web开发专家的探索,这样的架构设计已经有了一套行之有效的模式。这些模式都是围绕着REST的思想来...
虽然设计一个好的求解算法更像是一门艺术,而不像是技术,但仍然存在一些行之有效的能够用于解决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况下,为了获得较好的...
案例教学法是一种行之有效的教学方法,张学东,,本文在对案例和案例教学法的界定的基础上,探索总结了采用案例教学法值得注意的几个问题;归纳了本人采用案例教学法的实践教学经
C#高效编程改进C#代码的50个行之有效的办法( 第2版) 中文版
本文提出一种利用混沌搜索一类组合优化问题最优解的模型 ,并对其进行了理论分析和数值模拟 .与混沌神经网络模型相比 ,本模型避免了模型参数选择的难题 ,具有实现方便 ,寻优效果好的优点 ,为解决一类组合优化问题提供...
改进C#代码的50个行之有效的办法,提高C#编程水平的高质量书籍
首先,要说明的是,这个教程只在...但是经过方法测试和努力,测试了几天都没有一个行之有效的可以在RAID模式下安装2003系统的方法,经过冷静思考和调整思路以后,凭借自己10几年的经验,终于找到了正确的方法。
淘宝客推广引流技术揭密 分享目前最行之有效的几种方法
实践证明:托管模式是企业合作行之有效的方法,比较成功的托管能减少运作成本,提高效益,保证企业持续发展,促进社会效益。托管模式可作为优先选择,但托管模式目前尚不规范,有待进一步实践与探索,尽快形成一部系统的、...
设计模式是软件开发的重要组成部分,并且是解决给定问题的行之有效的方法。 在本课程中,您将全面了解行业标准的设计模式,确定在设计和开发软件时通常会遇到的挑战,并在Node.js应用程序中实现解决方案。 随着时间...
第四章:设计的程序与方法 一、接受设计委托二、设计准备阶段三、设计实施与展开四、设计后期管理 设计的程序与方法全文共14页,当前为第1页。 一:接受设计委托 设计项目要有新颖性、独特性。在这一阶段应重点做好...
网店推广几种简单且行之有效的方法
针对某型导弹测试设备电路板故障缺乏行之有效检测方法的现状,设计了某导弹测试设备电路板智能检测系统。首先简单介绍了电路板检测原理,结合该设备电路板的结构和工作特点,建立了某型导弹测试设备电路板故障检测的...
本书是我的专栏《百图解码支付系统设计与实现》系列文章汇总整理并重新修订。汇集了我十多年支付系统架构设计的经验总结,以实战为导向,深入浅出讲解支付系统的架构设计与实现,涵盖基础概念、核心流程、核心子系统...
对现代工业行之有效的EDI解决方案.docx
虽然设计一个好的求解算法更像是一门艺术,而不像是技术,但仍然存在一些行之有效的能够用于解决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况下,为了获得较好的...
虽然设计一个好的求解算法更像是一门艺术,而不像是技术,但仍然存在一些行之有效的能够用于解决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况下,为了获得较好的...
• 1. 沙箱简介 • 2. 研究动机 • 3. Survive the Tab Closing -- Renderer进程持久化 • 4. Survive the Device Rebooting -- Cache持久化 • 5. Survive the Re-Install – 克隆攻击 • 6. 总结
C#高效编程_改进C#代码的50个行之有效的办法(第2版) - 瓦格纳(Bill Wagner).mobi