谢 谢 收 藏 http://www.qqread.com/java/2006/10/y220531.html
更多内容请看Java环境安装配置、Java编程开发手册专题,或进入讨论组讨论。
由于Java的内存模型的原因,在C++中的双重检查模型在Java中不可用:
public static Singleton getInstance() {
if(instance==null) {
synchronized(this) {
if(instance==null) {
instance=new Singleton();
}
}
}
return instance;
}
如果采用synchronized方法,又会严重影响性能:
public static synchronized Singleton getInstance() {
if(instance==null) {
instance=new Singleton();
}
return instance;
}
如何实现Lazy Singleton?方法是利用Java的ClassLoader即时装载特性,使用一个SingletonHolder实现:
static class SingletonHolder {
static Singleton instance = new Singleton();
}public static Singleton getInstance() {
return SingletonHolder.instance;
}
这里利用Java ClassLoader特性,在第一次加载SingletonHolder的时候初始化实例,并且保证了没有多线程并发问题。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Java环境安装配置 (5571篇文章)
- Java编程开发手册 (8196篇文章)
- 125条常见的java面试笔试题大汇总 (23470次浏览)
- 十四种Java开发工具点评 (16011次浏览)
- JAVA中配置环境变量设置方法大全 (14586次浏览)
- 论Java外观模式 (1091次浏览)
- 英文打字练习 (718次浏览)
- Java编程十大典型问题详解(1) (637次浏览)
- Java路径问题最终解决方案 (598次浏览)
- Ruby,Java的劲敌 (582次浏览)
- Java学习从入门到精通(附FAQ)2 (579次浏览)
- JAVA高手解析XML配置文件的读取操作 (568次浏览)



