Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Design Pattern & UML
打印话题 寄给朋友 订阅主题 |
作者 | Re:Singleton Pattern 的java实现(代码) [Re:stevendu] |
wnqq
发贴: 14 积分: 10 |
于 2003-08-06 06:01
stevendu wrote: 上面所提到的第二部分的 code:
比第一部份多了 if (instance==null)... 的判断 这样作的目地叫作 "lazy initialization". 如果该 field (instance) 是 static 的话 而且该 class (Singleton) 的目的就只是产生该 singleton 的话 那末事实上这个 if ... 的部分其实是多余的 直接用第一布分的 code:
就简单可达到 "lazy initialization" 的同样的功能了 因为只要没有 reference 到 Singleton class, static 的 instance 就不会被 initialized. 如果该 field (instance) 不是 static, 那才有必要考虑用 if ...... 的 code Sample:
可是如此作的话, synchronized 会让 performance 变的很差 所以有改良品种:
上面的 code 叫做 double-checked locking. 可惜的是 java 的 "double-checked locking" 并不 work. 目前有个 "JSR-133 Java Memory Model and Thread Spec" (http://www.cs.umd.edu/~pugh/java/memoryModel/CommunityReview.pdf) 正在进行中 并期望能解决这个 "broken double-checked locking" 的问题
wnqq edited on 2003-08-06 06:04
有了Swing为什么还要SWT? |
话题树型展开 |
人气 | 标题 | 作者 | 字数 | 发贴时间 |
8880 | Singleton Pattern 的java实现(代码) | stevendu | 603 | 2003-08-05 21:27 |
7520 | Re:Singleton Pattern 的java实现(代码) | wnqq | 2427 | 2003-08-06 06:01 |
8077 | Re:Singleton Pattern 的java实现(代码) | stevendu | 170 | 2003-08-06 07:42 |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |