SSH下单例跟并发的关系

刚研究单例。似懂非懂。请教个问题一般SSH项目中,把DAO,Service层设置为单例,把action层设置成prototye。那单例会不会影响到并发数?比如现在有10个... 刚研究单例。似懂非懂。请教个问题
一般SSH项目中,把DAO,Service层设置为单例,把action层设置成prototye。那单例会不会影响到并发数?比如现在有10个人要去把修改某个属性的值,那不是要9个人一直等待。虽说时间不长。
希望高手帮忙指导下!多谢
展开
 我来答
naddylee
推荐于2016-08-13 · TA获得超过491个赞
知道小有建树答主
回答量:265
采纳率:66%
帮助的人:215万
展开全部
首先,一个类并不是每次只能一个线程拥有和执行的,所以,你认为的要9个人一直等待是不存在的。除非你将某个方法声明为 synchronized。

另外,DAO,Service 这些类一般情况下都是“无状态”的类,即执行方法过程中,不会改变类本身属性的取值。所以,不同的线程同时执行这个类的方法,不会引起同步问题,因此,这种类称为“线程安全”的类,这种类可以设为单例以便提高内存利用率和执行速度。
追问
那设置synchronized,就会影响到并发问题了?再请教个问题哦。比如一个用户执行一次操作(比如修改),要调用一次dao,然后通过session.update()去修改,那另外一个用户也“同时”要调用这个Dao,然后也通过session.update()执行修改,这个就是二个线程?那现在两个线程要同时调用单例Dao层,执行一次修改操作。不是一个要等待吗
追答
是的,是两个线程。

两个线程同时调用一个实例,并不意味着必须一个执行完才能轮到第二个。
类的方法代码、静态变量等是装载到方法区(Method Area),一个类的实例,是放在堆区,都是给所有线程共享的。一个线程执行一个实例的方法时,是定位到这个实例的类对应的方法区,并执行里面的字节码。执行这些字节码并不需要一个一个线程进行。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
CM娱新世界
2014-01-27 · TA获得超过308个赞
知道小有建树答主
回答量:337
采纳率:100%
帮助的人:143万
展开全部
为什么要等待啊,10个人 10条线程 同一个实例(单例只保证是同一个实例而已)
追问
我有点懵懂。单例是一个实例,那比如我现在Dao层是单例。我有10个线程,是不是就要调用sessionFactory创建十个session?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式