本帖最后由 黄玉昆 于 2013-2-16 14:32 编辑
毕老师写的单例设计模式中的懒汉式的两个示例如下:
第一种:- class Single
- {
- private static Single s = null;
- private Single(){}
- public static Single getInstance()
- {
- if (s == null)
- {
- synchronized(Single.class)
- {
- if (s == null)
- s = new Single();
- }
- }
- return s;
- }
复制代码 第二种:- class Single
- {
- private static Single s = null;
- private Single(){}
- public static synchronized Single getInstance()
- {
- if (s == null)
- s = new Single();
- }
- return s;
- }
- }
复制代码 毕老师说第一种的双重判断是可以提高效率的,因为可以减少判断锁的次数。但是对于第一种,每次也要判断s==null,也就是说不用每次判断锁了,还要判断s,这样的效率能提高多少呢?
还是锁判断锁比判断s要低效呢?
|