三种单利模式
来源:互联网 发布:决战武林灵武升阶数据 编辑:程序博客网 时间:2024/04/29 16:43
模式一:
class Singleton2 {
private Singleton2(){
}
private static Singleton2 instance;
public static Singleton2 getInstance() {
if(instance==null){
instance=new Singleton2();
}
return instance;
}
}
不用说,大家也知道,这种在单线程程序中是没什么问题的,但多线程程序中,则可能会创建出2个或多个对象.
模式二:
public class Singleton {
private Singleton(){
}
private static Singleton instance =new Singleton();
public static Singleton getInstance(){
return instance;
}
}
这种很显然没有前者的问题.
模式三:
public class Singleton {
private static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
在模式2中,不管我们是不是调用getInstance()都会存在一个实例在内存中,而在模式3中,
只有我们调用了getInstance(),才会创建唯一的实例到内存中.并且也解决了模式1中多线程的问题.
解决的方式是利用了Classloader的特性
- 三种单利模式
- 三种单利模式
- 三种单利模式的设计
- Java设计模式(三):单利模式
- 单利的三种办法
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- 单利模式
- JS正则表达式大全
- 求信中的自卑表现——大学生求职七大昏招衍生系列(6)
- S3c2440A 平台HIVE 注册表+binfs 的实现
- 思想的小鱼
- java 与 mysql 中文问题的处理
- 三种单利模式
- Windows Internet Explorer 8 简体中文正式版发布!
- SQL:JOIN之完全用法
- 在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统(源代码下载和PDF文档下载)
- SQL中cross join,left join,right join ,full join,inner join 的区别
- FLEX实践:DATAGRID中添加DOUBLECLICK事件
- Grails Web开发,测试过程中修改页面后,报错,返回修改前,依然报原来错误.
- 模拟Ethernet帧的发送
- 解析ARP数据包