struts2的多线程访问问题(特定参数下只能串行访问action)

博客探讨了Struts2框架下,关于多线程访问action的同步问题。在高并发场景中,如何确保特定参数下的action只能被一个用户串行访问。作者发现action每次都会创建新的线程和对象,尝试使用synchronized关键字同步但未成功。最终,作者找到了使用synchronized(str.intern())作为解决方案,尽管对此方法的可靠性有所保留。
摘要由CSDN通过智能技术生成

以前一直都是理所当然的认为浏览器发起一个请求到后台action,肯定是创建一个新线程并创建一个新类来为这个请求服务,其中的想法也比较混乱却没有理会。

直到近期遇到了一个新的需求要做高并发的时候抢购一个物品,就想怎么样给action加一个synchronized同步一下,这时候问题就来了!

1.action收到请求后是用同一个线程进行提供服务呢还是每次都新建一个线程?

2.web服务器收到请求后是新建一个action实例对象还是用单例模式?

3.如何控制每次只能一个用户访问特定参数下的该action?

为了探究这些问题,先做了一个例子(用的是SSH),回答了前2个问题

1.action收到同一浏览器的访问时会新建一个线程,之后每次都用该线程进行该浏览器访问的处理。

2.无论是不是同一浏览器的请求,服务器会在收到请求后新建action对象

对于第三个问题就比较难办些了。

之前接触的多线程同步的内容比较少,第一想到的是synchronized的,于是就百度下synchronized用法,写了个例子

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值