jililong_2007 2011-05-16 14:50
浏览 234
已采纳

关于java单例模式(Singleton) 求解 -

:cry:
在我理解,单例就是在整个jvm中只存在一个类实例。
但是不知道在什么时候,在什么地方使用单例。

所以举个例子,帮忙看下我的理解对不对。
jsp页面 userName=1 passWord=2 (用户1提交)
jsp页面 userName=3 passWord=4 (用户2提交)

两人同时新增的话,进入action,如果实体类(Model)是单例的话,就会出现用户甲和用户乙的数据混乱对吗?

  • 写回答

9条回答 默认 最新

  • redstarofsleep 2011-05-16 15:12
    关注

    [quote]
    问题1:在我理解,单例就是在整个jvm中只存在一个类实例。 理解对不对

    问题2:在什么时候,在什么地方使用单例。

    问题3:我举的例子
    单例不是同一实例吗,两个用户调同一个实例并且修改,当然会产生覆盖的问题啊。
    [/quote]

    1.对的
    2.单例主要是用在你只需要一个实例的时候,分为2种:多个实例就会出问题,创建实例消耗太大。
    比如说:写日志,你如果多个实例大开同一个文件写日志,那肯定是不行的(当然,如果你非要多个实例之间做同步,打开文件,写,关,然后下一个实例,这种,那性能就不行了哦)
    3.你举的那个例子,在Struts2里,比如说把Action定义成下面这样,那就是不行的
    [code="java"]
    public class Login {
    private String name;
    private String pass;

    //get/set......
    }
    [/code]
    这样子用单例就会乱掉,所以Struts2不能用单例解决这种问题。
    如果是Struts1,是封装在Form里作为方法参数传入的就没有问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?