您的位置:首页 > 编程语言 > Java开发

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

2012-09-03 19:38 295 查看
今天看到有人发帖子问Action的问题,我想来说明一下。

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

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

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

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

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

希望对大家有帮助,如果又什么意见建议,欢迎提出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: