java单例模式的两种形式
2010-01-06 16:21
495 查看
单例模式两种形式:
第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。
注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
一般来说第一种比较安全。建议都用第一种。
1, 饿汉式单例类 public class Singleton { private Singleton(){} //在自己内部定义自己一个实例,是不是很奇怪。注意这是private 只供内部调用 private static Singleton instance = new Singleton(); //这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } }
2. 懒汉式单例类 public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if (instance==null) instance=new Singleton(); return instance; } }
第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。
注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。
一般来说第一种比较安全。建议都用第一种。
相关文章推荐
- 读书汇(02)--组织的两种形式(文化与制度)
- C# winform 使用进度条(两种形式)
- android图片截取的两种形式
- Ringtone的两种类型三种形式
- 用java创建表格的两种形式(1)
- Javascript继承两种形式详解
- SQL 关于apply的两种形式cross apply 和 outer apply
- Java Timer组件的两种实现形式
- android动画的两种形式,总结得还行
- Java线程的两种实现形式
- hibernate many-to-many(单向和双向)--->(annotation和xml文件两种形式)
- 邻接表(两种实现形式)
- 当某个表中存在标志表格中记录不同状态的判断性字段的时候,采用两种不同的数据库组织形式,查询执行速度的实验。
- 符合类型(引用,指针)的两种不同形式的定义
- ORA-01502 oracle数据库 index索引的两种形式
- 在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编
- 比较C++数组元素引用的两种形式a[0]与0[a]
- UIActivityIndicatorView的两种形式
- log4j 日志配置 properties 和 xml形式两种
- 冒泡排序的两种形式