在线259人
首页
主题表
培训咨询
标签
查搜
注册
登陆
用户
自动登陆
密码
新用户注册
忘记密码?
首页
»
论坛
»
并行异步等伸缩性讨论
上一主题
终端类型全是手机,是靠在卡里写入程序,发送短信到网关,网关转发到我公司的服务器实现的,服务器就是socket程序,它简单处理后就发到别的服务器,调用其他服务器的web Service等待返回获取数据,..
下一主题
板桥大哥你好,我最近在做项目的过程中发现,我们很多的人对 事务 控制这个程序员最应该注意的问题并不重视。可以说是概念模糊。我对这里也是很模糊,没想到以前很多的项目就这样过来了。 比如我们现..
Go
共有
12
回复(
1
页) 阅读11次
前往下页:
hxz
发表文章:
注册时间: 2002年12月03日
悄悄话
个人博客
当前离线
bq看看这个,既然可以这样为什么还要用dcl
2003年01月09日 10:06
singleton模式
顶一下
public class Resource
{
private static final Resource instance = new Resource();
private Resource() {}
public static Resource getResource()
{
return instance;
}
}
这样不是可以避免DCL带来的多线程编程的麻烦以及你所提到的错误吗?
hxz
发表文章: 87
注册时间: 2002年12月03日
悄悄话
个人博客
当前离线
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年01月09日 10:09
顶一下
再看看banq的单态,以经说明了这个问题!
dcl真是鸡肋啊!!!
http://www.javaresearch.org/article/showarticle.jsp?column=1&thread=982
jxb8901
发表文章: 117
注册时间: 2002年10月24日
悄悄话
个人博客
当前离线
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年01月09日 18:08
顶一下
你这样不是失去了"懒惰初始化"的好处了吗?
banq
发表文章: 10844
注册时间: 2002年08月03日
悄悄话
个人博客
当前离线
26人关注
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年01月09日 21:08
顶一下
你这个例子只是说明,实际线程使用中,会出现更复杂的DCL现象,导致系统在庞大用户同时在线时,系统运行混乱。
henry.t
发表文章:
注册时间: 2003年01月02日
悄悄话
个人博客
当前离线
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年01月09日 22:54
顶一下
我来帮忙UP,这个问题我还是有点疑惑,看了DCL那么麻烦,而且在想要性能的时候有漏洞,想要安全的时候性能又不高,凭我现在的水平还看不出来像楼主这样和DCL比起来有什么不好的,当然,"懒惰初始化"是放弃了,但我们先忽略不记这个。其实我发现对这个问题不是很清楚的网友(当然包括我)不少的,BANG,看了你的回复,我觉得太笼统了,不是很详细,不可否认,本人水平也实在(连我自己都)不敢恭维,无法明白BANG你回复的具体意思:
“实际线程使用中,会出现更复杂的DCL现象,导致系统在庞大用户同时在线时,系统运行混乱。”
麻烦BANG在有空的时候就楼主的主题和你的这个回复详细的说明一下,为什么会这样,会发生你说的情况?希望我自己和没弄清楚的朋友得到提高,代表大家谢谢你。
hxz
发表文章: 87
注册时间: 2002年12月03日
悄悄话
个人博客
当前离线
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年01月10日 11:17
顶一下
知道banq下面还有话说的!
搬登子听课!呵呵!
henry.t
发表文章: 148
注册时间: 2003年01月02日
悄悄话
个人博客
当前离线
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年01月13日 23:06
顶一下
我想,大概是因为这个问题太简单而幼稚,所以BANG和众高手们都不削回答,不过,我对这个帖子等了好几天了,很辛苦,请大家本着扶贫的精神回答:
“实际线程使用中,会出现更复杂的DCL现象,导致系统在庞大用户同时在线时,系统运行混乱。”
为什么用楼主的方法会造成这样的结局,如果可能,请用例子来说明。
我想BANG做这个网站的目的是想帮助访问她的所有人提高水平,不会只针对那些少数的(当然不一定)水平很高的人,我来这里的时间不长,但自己感觉已经得到了不少帮助,很喜欢这里,但提高需要时间,任何人都有个过程,请对我这个水平很一般得人有点耐心,我会经常来这里学习的!
祝每个来这里的人有所得!
banq
发表文章: 10844
注册时间: 2002年08月03日
悄悄话
个人博客
当前离线
26人关注
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年01月14日 10:08
顶一下
对不起,这样的例子举起来代码会很长,说明会很多.
你可以参看javaworld上的相关文章
iceant
发表文章:
注册时间: 2002年10月13日
悄悄话
个人博客
当前离线
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年01月14日 23:39
顶一下
我找过一些资料来看,确实会有一些不可预知的可能性存在。
那就证明,DCL 不是一个好的方法,不用它就是了。
richardluopeng
发表文章: 71
注册时间: 2002年08月30日
悄悄话
个人博客
当前离线
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年01月23日 13:44
顶一下
对不起,什么是DCL???
manbaum
发表文章:
注册时间: 2003年03月21日
悄悄话
个人博客
当前离线
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年03月24日 17:12
顶一下
dcl = Double-checked locking
如下:
public static Singleton getInstance()
{
if (instance == null)
{
synchronized(Singleton.class) { //1
Singleton inst = instance; //2
if (inst == null)
{
synchronized(Singleton.class) { //3
//inst = new Singleton(); //4
instance = new Singleton();
}
//instance = inst; //5
}
}
}
return instance;
}
我觉得没必要 dcl,两次 synchronized 难道不花费更多的时间么?本来为了提高性能,反而把问题复杂化了。
class Singleton
{
private static Singleton instance;
private Vector v;
private boolean inUse;
private Singleton()
{
v = new Vector();
v.addElement(new Object());
inUse = true;
}
public static synchronized Singleton getInstance()
{
if (instance == null) //1
instance = new Singleton(); //2
return instance; //3
}
}
这样不会影响多少性能,不就是等待一个 return 的时间么。
class Singleton
{
private Vector v;
private boolean inUse;
private static Singleton instance = new Singleton();
private Singleton()
{
v = new Vector();
inUse = true;
//...
}
public static Singleton getInstance()
{
return instance;
}
}
也可以,不用等,只是没有了 lazy initialize 好处。
shyguy
发表文章:
注册时间: 2002年09月02日
悄悄话
个人博客
当前离线
Re: bq看看这个,既然可以这样为什么还要用dcl
2003年04月11日 13:49
顶一下
因为有的时候必须lazy-load!
whyenglish
发表文章:
注册时间: 2009年07月01日
悄悄话
个人博客
当前离线
回复:Re: bq看看这个,既然可以这样为什么还要用dcl
2009年07月01日 13:49
顶一下
可以这样吗?
class Singleton
{
private static Singleton instance = null;
//enforce singleton
private Singleton() {
//...
}
public static Singleton getInstance()
{
if(instance == null){
synchronized(Singleton.class){
//check again
if(instance ==null ){
instance = new Singleton();
}
}
}
return instance;
}
}
不知道这样对性能的影响会有多大?一旦instance实例化后,第二次getInstance()就不会再运行到 synchronized(..)。为什么非要在方法上进行整个同步呢?这样做会产生多个Singleton的实例吗?
[该贴被whyenglish于2009-07-01 13:51修改过]
singleton模式(49)
共有
12
回复(
1
页)
Go
上一主题
返回本主题
返回主题列表
返回页首
下一主题
正在读取,请等待...
查询本论坛内
近一天
近三天
近一周
近一月
近三月
近半年
近一年
所有
回复超过
的热门帖子
标题
内容
提交时自动拷贝以上内容到剪贴板 Ctrl-V可取出;提问题前先查询
标签列表
使用帮助
解惑之道在
J道
,打造中国最具影响力的的软件架构社区
推荐FireFox或Chrome快速浏览本站
OpenSource
JIVEJDON
Powered by
JdonFramework
Code © 2002-09
jdon.com
anti spam