关于Struts的Action一点说明(线程安全性)
2012-09-03 19:38
295 查看
今天看到有人发帖子问Action的问题,我想来说明一下。
虽然我也不能算精通,但是希望把我知道的和大家分享一下;
我没有用过Struts2,一直在用Struts。不知道是不是一样的。
对Struts,我可以很负责任的说,同一个Action只会实例化一次,所有请求共享一个Action。但是它不是线程安全的。这个有点难理解,不过事实就是如此。可以看官方文档,看一下对线程但是安全的说明。就像不同的线程中调用了同一个实例的方法(火车售票),如果共享数据而不进行同步的话就会出现-1和-2票。
数据安全的话,类变量和实例变量最好不要共享和特定请求相关的信息,这一点大家应该很清楚,以为Action里的实例变量和类变量都将被所有请求共享,但是可以用来共享一般的信息,比如说这个action的访问量,或者在这个action里进行某种操作的频率,共享时要注意同步(如果不同步就会出现火车售票问题中 -1,-2的问题 ,这就是线程不安全的 )。
另外,Spring管理Action的话,一般也是用默认的,也就是single。
希望对大家有帮助,如果又什么意见建议,欢迎提出来。
虽然我也不能算精通,但是希望把我知道的和大家分享一下;
我没有用过Struts2,一直在用Struts。不知道是不是一样的。
对Struts,我可以很负责任的说,同一个Action只会实例化一次,所有请求共享一个Action。但是它不是线程安全的。这个有点难理解,不过事实就是如此。可以看官方文档,看一下对线程但是安全的说明。就像不同的线程中调用了同一个实例的方法(火车售票),如果共享数据而不进行同步的话就会出现-1和-2票。
数据安全的话,类变量和实例变量最好不要共享和特定请求相关的信息,这一点大家应该很清楚,以为Action里的实例变量和类变量都将被所有请求共享,但是可以用来共享一般的信息,比如说这个action的访问量,或者在这个action里进行某种操作的频率,共享时要注意同步(如果不同步就会出现火车售票问题中 -1,-2的问题 ,这就是线程不安全的 )。
另外,Spring管理Action的话,一般也是用默认的,也就是single。
希望对大家有帮助,如果又什么意见建议,欢迎提出来。
相关文章推荐
- 关于Struts2中struts.xml配置Action的一点说法——约定大于配置
- 关于Struts中Action映射的解释
- 关于delphi Com+调用C# DLL的一点说明
- 关于Linux下snmpd.conf的一点说明
- 关于N步相移中相位噪声仿真分析的一点说明
- 关于memcpy和memmove的一点说明
- 关于虚函数的一点说明
- 关于配置Https的一点说明
- 关于Struts2.5版本报"Wrong method was defined as an action method: index"的解决方法
- 关于消息队列的一点说明
- 关于windbg搜索符号文件的一点说明
- 关于使用SVD分解方法求解AX=0方程的一点说明
- 关于struts三种action后台接收参数的方法
- 关于struts-1.3的jar包说明
- 关于写博客的原因以及一点个人说明。
- 关于绝对路径和相对路径的又一点说明
- 《Webwork in Action》一书中关于配置浏览器的一点更正
- 关于移位操作的一点说明
- Struts2.5关于<s:action.../>标签找不到Action的问题
- 关于asp.net无刷新联动的一点补充说明