关于Struts的Action一点说明(线程安全性)

今天看到有人发帖子问Action的问题,我想来说明一下。

虽然我也不能算精通,但是希望把我知道的和大家分享一下;

我没有用过Struts2,一直在用Struts。不知道是不是一样的。

对Struts,我可以很负责任的说,同一个Action只会实例化一次,所有请求共享一个Action。但是它不是线程安全的。这个有点难理解,不过事实就是如此。可以看官方文档,看一下对线程但是安全的说明。就像不同的线程中调用了同一个实例的方法(火车售票),如果共享数据而不进行同步的话就会出现-1和-2票。

数据安全的话,类变量和实例变量最好不要共享和特定请求相关的信息,这一点大家应该很清楚,以为Action里的实例变量和类变量都将被所有请求共享,但是可以用来共享一般的信息,比如说这个action的访问量,或者在这个action里进行某种操作的频率,共享时要注意同步(如果不同步就会出现火车售票问题中 -1,-2的问题 ,这就是线程不安全的 )。

另外,Spring管理Action的话,一般也是用默认的,也就是single。

希望对大家有帮助,如果又什么意见建议,欢迎提出来。

转载于:https://my.oschina.net/coconet/blog/76452

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值