Java程序性能优化-单例模式(1)

Java程序性能优化-单例模式(1),第1张

  单例模式( )

单例模式是设计模式中使用最为普遍的模式之一 它是一种对象创建模式 用于产生一个对象的具体实例 它可以确保系统中一个类只产生一个实例 在Java语言中 这样的行为能带来两大好处

( )对于频繁使用的对象 可以省略创建对象所花费的时间 这对于那些重量级对象而言 是非常可观的一笔系统开销

( )由于new *** 作的次数减少 因而对系统内存的使用频率也会降低 这将减轻GC压力 缩短GC停顿时间

因此对于系统的关键组件和被频繁使用的对象 使用单例模式便可以有效地改善系统的性能

单例模式的参与者非常简单 只有单例类和使用者两个 如表 所示

表   单例模式角色

它的基本结构如图 所示

图   单例模式类图

单例模式的核心在于通过一个接口返回唯一的对象实例 一个简单的单例实现如下

public class Singleton {

private Singleton(){

System out println( Singleton is create ) //创建单例的过程可能会比较慢

}

private static Singleton instance = new Singleton()

public static Singleton getInstance() {

return instance

}

}

注意代码中的重点标注部分 首先单例类必须要有一个private访问级别的构造函数 只有这样 才能确保单例不会在系统中的其他代码内被实例化 这点是相当重要的 其次 instance成员变量和getInstance()方法必须是static的

注意 单例模式是非常常用的一种结构 几乎所有的系统中都可以找到它的身影 因此 希望读者可以通过本节 了解单例模式的几种实现方式及其各自的特点

这种单例的实现方式非常简单 而且十分可靠 它唯一的不足仅是无法对instance实例做延迟加载 假如单例的创建过程很慢 而由于instance成员变量是static定义的 因此在JVM加载单例类时 单例对象就会被建立 如果此时 这个单例类在系统中还扮演其他角色 那么在任何使用这个单例类的地方都会初始化这个单例变量 而不管是否会被用到 比如单例类作为String工厂 用于创建一些字符串(该类既用于创建单例Singleton 又用于创建String对象)

public class Singleton {

private Singleton() {

System out println( Singleton is create )

//创建单例的过程可能会比较慢

}

private static Singleton instance = new Singleton()

public static Singleton getInstance() {

return instance

}

public static void createString(){      //这是模拟单例类扮演其他角色

System out println( createString in Singleton )

}

}

       返回目录 Java程序性能优化 让你的Java程序更快 更稳定

编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

       J ME移动开发实战教学视频

Visual C++音频/视频技术开发与实战

Oracle索引技术

lishixinzhi/Article/program/Java/gj/201311/27837

《编写高质量代码》(秦小波)电子书网盘下载免费在线阅读

链接: https://pan.baidu.com/s/1rnSEgyYlV7fS4dbh6udY2g

提取码: k529  

书名:编写高质量代码

作者:秦小波

豆瓣评分:6.5

出版社:机械工业出版社华章公司

出版年份:2011-12-28

页数:303

内容简介:

在通往“Java技术殿堂”的路上,本书将为你指点迷津!内容全部由Java编码的最佳实践组成,从语法、程序设计和架构、工具和框架、编码风格和编程思想等五大方面对Java程序员遇到的各种棘手的疑难问题给出了经验性的解决方案,为Java程序员如何编写高质量的Java代码提出了151条极为宝贵的建议。对于每一个问题,不仅以建议的方式从正反两面给出了被实践证明为十分优秀的解决方案和非常糟糕的解决方案,而且还分析了问题产生的根源,犹如醍醐灌顶,让人豁然开朗。

全书一共12章,1~3章针对Java语法本身提出了51条建议,例如覆写变长方法时应该注意哪些事项、final修饰的常量不要在运行期修改、匿名类的构造函数特殊在什么地方等;4~9章重点针对JDK API的使用提出了80条建议,例如字符串的拼接方法该如何选择、枚举使用时有哪些注意事项、出现NullPointerException该如何处理、泛型的多重界限该如何使用、多线程编程如何预防死锁,等等;10~12章针对程序性能、开源的工具和框架、编码风格和编程思想等方面提出了20条建议。

本书针对每个问题所设计应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中崭露头角,建议你将此书搁置在手边,随时查阅,一定能使你的学习和开发工作事半功倍。

作者简介:

秦小波,资深软件开发工程师、系统分析师和架构师(获Sun架构师认证),从软件开发工作10余年,实践经验极其丰富。资深Java技术专家,Java语言、Spring、Struts 2、Hibernate、iBatis、jBPM等Java技术,在企业级Java应用领域积累了大量工程经验,对ESB、BPEL等整合技术也有较深入的认识。精通设计模式,对设计模式有深刻的认识和独到见解,而且创造性地提出了自己在大量实践中总结出来的新的设计模式。他撰写的《设计模式之禅》一书凭借优质的内容和良好的可读性广获读者好评,被誉为“设计模式领域的里程碑之作。此外,他还是一位优秀的DBA,具有IBM DB2 DBA资格认证,对海量数据处理有深入的研究。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11772995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存