Chinaunix首页 | 论坛 | 博客
  • 博客访问: 334085
  • 博文数量: 80
  • 博客积分: 711
  • 博客等级: 上士
  • 技术积分: 733
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-23 15:43
文章分类

全部博文(80)

文章存档

2015年(9)

2014年(14)

2013年(33)

2012年(24)

我的朋友

分类: Java

2013-05-16 18:12:55

单例模式的双检索实现,是依赖于编译器的,很多平台和带优化的编译器,这样写是错误的。

   如果编译成如下代码,那双检索的单例没有问题。
   1. temp = 分配内存
   2. 调用temp的Constructor
   3. instance = temp

   但如果编译优化,是存在问题的。
   1. instance = 分配内存
   2. 调用Constructor来初始化instance
   
   例如: A进入到1,还没有上锁,然后被抢占;这时,B进入到1,发现instance不为空,直接返回,而这时instance的constructor并没有被调用。
阅读(538) | 评论(0) | 转发(0) |
0

上一篇:Java注解

下一篇:UML of Design Patterns

给主人留下些什么吧!~~