单例模式(四)
来源:互联网 发布:集成吊顶计算软件 编辑:程序博客网 时间:2024/06/07 05:09
单例模式(四)
由前三篇的分析,我们该怎么实现既能达到饿汉式中不用繁琐的线程控制进而影响系统性能的方式实现单例模式,又能达到懒汉式的延迟加载的效果呢?实现该效果要用到被称为IoDH的技术。不多说,直接上代码:
public class IoDHSingle {private IoDHSingle() {// TODO Auto-generated constructor stub}private static class HolderClass{private final static IoDHSingle instance=new IoDHSingle();}public static IoDHSingle getInstance() {return HolderClass.instance;}}
为什么以上代码可以实现想要的效果呢?关键在增加了一个静态内部类。
1)代码中没有繁琐的线程控制代码,我们可以达到饿汉式的效果;
2)静态变量不是IoDHSingle的成员变量,所以在加载类IoDHSingle时,不会初始化变量,而是在调用getInstance时,虚拟机加载HolderClass类,进而再初始化变量instance,因此,达到了延迟加载的效果;
这时大家会问,那多线程访问 的时候,是怎么保证单例的呢?这里是靠java虚拟机来保证其线程安全性的,这里也带来了一个缺点,就是该方法依赖编程语言的特性,不过该方法也算是在java中实现单例模式的最佳方式了。
通过以上的分析,我们再一次体会到,程序真的没有最好,只有更好。
那单例模式在声明情况下使用呢?先想想,看单例模式最后一篇的总结吧---单例模式(五)
0 0
- 单例模式(四)
- 设计模式(四)---单例模式
- 设计模式(四)单例模式
- 设计模式(四)单例模式
- 四、单例模式
- 四 单例模式
- 四,单例模式
- 四、单例模式
- 四、单例模式
- java单例模式(四)
- 四、单例(Singleton)模式
- 单例模式补充(四)
- (四)单例设计模式
- Java设计模式(四) 单例模式
- Java模式设计之单例模式(四)
- java设计模式学习(四):单例模式
- 《javascript设计模式》读书笔记四(单例模式)
- 设计模式学习(四) -- 单例模式 Singleton Pattern
- osworkflow工作流引擎学习笔记
- Dynamics CRM2011 导入解决方案报根组件插入错误的解决方法
- android 设置 透明的activity
- 中国天气网API接口
- hdu 2068 RPG的错排
- 单例模式(四)
- 酒鬼
- 记一次JVM内存调整
- Arm汇编学习笔记(二)——编写编译并执行依赖外部模块的汇编代码以及PIC代码分析
- Java反射知识总结
- 敏捷开发之Scrum框架入门
- Myeclipse自动生成javabean的get和set方法
- BS开发仅支持32位runtime
- Ubuntu 修改 ssh远程端口号