请教一个Singleton的问题?

nitmithvyale 2003-10-29 11:09:55
我看到一段别人使用Singleton的代码.
public class MainDataSource
{
private static MainDataSource singleton;

public static MainDataSource getInstance()
{
if (singleton == null)
{
singleton = new MainDataSource();
ocdbm = new OracleConnDBMrgr();
ocdbm.setLoacation(JobProperty.JOBORACLEDS);
}
return singleton;
}
}

在这个Singleton中,没有用到synchronized,可能会产生多个单实例,这样是不是跟Singleton的宗旨有所违背?

请指点.
...全文
43 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohaiz 2003-11-24
  • 打赏
  • 举报
回复
在多线程的情况下,确实会产生多个实例。
但是具体应用具体看待。谁也没有多个实例就一定会错误。当然这样的代码还是应该避免。
truezerg 2003-11-14
  • 打赏
  • 举报
回复
这个例子确实有问题。 可能造成多个实例的出现。

to: whyxx(越来越觉得自己什么都不会)

把属性声明成static的并不能保证只有一个实例。 那只能保证大家都用一个实例。但大家都用一个实例并不代表只有一个实例。 (怎么像绕口令??)


所以还是要把方法变成synchronized的

另外。双重检查在java中好像不成立。
zephyr_zhao 2003-11-13
  • 打赏
  • 举报
回复
借宝地一用,哈哈
请各位帮我看个问题吧
http://expert.csdn.net/Expert/TopicView1.asp?id=2457400
zephyr_zhao 2003-11-13
  • 打赏
  • 举报
回复
是的,线程不安全的
jeffyan77 2003-10-30
  • 打赏
  • 举报
回复
这段代码确实会产生问题。参见Double-Check Locking Pattern
refe991520 2003-10-30
  • 打赏
  • 举报
回复
Double-Check is error in java.
nitmithvyale 2003-10-29
  • 打赏
  • 举报
回复
See:
http://www.jdon.com/designpatterns/singleton.htm
whyxx 2003-10-29
  • 打赏
  • 举报
回复
singleton是static的,只会产生一个实例,怎么可能产生多个实例呢

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧