struts1和2 线程安全?

一身豪气霸山头 123  2011-09-14 02:16:43
至今我还不知道struts1和2 那个线程安全!记得面试时基本都问这个题!我的回答总是:
Struts1的Action是单例模式,因此应用开发者必须保证它是线程安全的。
Struts2 的Anction对象为每一个请求产生一个实例,因此虽然在Action中定义了很多全局变量,也不存在线程安全问题。

这两句话是从书上背下来的! 可是我难以理解它,是我理解能力差吗? 那个线程安全呢? sturts1—— 必须保证它是线程安全的:那么1 是必须安全的了~1 安全 。 在struts2的解释中这么一句话“不存在线程安全问题”!不存在线程安全问题是安全还是不安全?
直接说那个安全个不安全不就完了。。还那么绕~ 我理解真的很差吗? 说能说下到底那个安全 那个不安全呢? 。没分了!!不多
...全文
260 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qq115396092 2012-01-10
看怎么用
struts1 本身是线程安全的,但如果在action中定义全局变量,多个线程共享这个全局变量(共享资源),这时就线程不安全了。 解决方案:1不要定义全局变量2使用synchronized
struts2 默认是不安全的,因为是单实例多线程。又有全局变量。 但在配置文件中设置scope="prototype"(原型模式)这是每次请求会新生成一个action实例。就成了多实例多线程,这样每个实例单独起来,所以线程安全了。
回复
qq115396092 2012-01-10
看怎么用
struts1 本身是线程安全的,但如果在action中定义全局变量,多个线程共享这个全局变量(共享资源),这时就线程不安全了。 解决方案:1不要定义全局变量2使用synchronized
struts2 默认是不安全的,因为是实例多线程。又有全局变量。 但在配置文件中设置scope="prototype"(原型模式)这是每次请求会新生成一个action实例。就成了多实例多线程,这样每个实例单独起来,所以线程安全了。
回复
veval 2011-09-14
总的来说,Struts1 的 Action 是单例模式,因此开发者必须保证它是线程安全的或是同步的,因为Struts 1中每个Action仅有一个实例来处理所有的请求。

但是在用Struts 1开发时并没有考虑到线程安全问题,这是因为我们在Action中使用的基本都是局部变量,而“局部变量是线程安全的。因为每执行一个方法,都会在独立的空间创建局部变量,它不是共享的资源。局部变量包括方法的参数变量”(忘了引自哪了)。在Struts 1中,所有的变量都是定义在Action中我们要执行的方法里的(Action中的execute方法或DispatchAction中指定要执行的方法),我们用于封装客户端请求参数的ActionForm,也是作为一个参数传入,也属于局部变量,因此,不存在线程安全问题。

Struts 2 的 Action 对象为每一个请求产生一个实例,因此,虽然在Action中定义了很多全局变量,也不存在线程安全问题。

Struts 2框架在处理每一个用户请求的时候,都建立一个单独的线程进行处理,值栈ValueStack也是伴随着局部线程而存在的。在该线程存在过程中,可以随意访问值栈,这就保证了值栈的安全性。

在Struts 2中,ActionContext是一个局部线程,这就意味着每个线程中的ActionContext内容都是唯一的。所以开发者不用担心Action的线程安全。
回复
shine333 2011-09-14
Struts' Action (s1) is not thread-safe, so the developers should make it thread-safe by his own.
回复
贪睡的兔子 2011-09-14
考试的时候你是喜欢选择题 还是问答题?
回复
vinegardou 2011-09-14
[Quote=引用 3 楼 gmzmla 的回复:]
引用 2 楼 vinegardou 的回复:

我来占个位置。


刚开始看 头像 相当帅气呀!但是点开后 竟然再吃方便面。。你都对比起你长相
[/Quote]
呵呵。
回复
[Quote=引用 2 楼 vinegardou 的回复:]

我来占个位置。
[/Quote]

刚开始看 头像 相当帅气呀!但是点开后 竟然再吃方便面。。你都对比起你长相
回复
vinegardou 2011-09-14
我来占个位置。
回复
ascendlin 2011-09-14
我也绕,等待楼下答复
回复
相关推荐
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2011-09-14 02:16
社区公告
暂无公告