struts1和2 线程安全?

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

这两句话是从书上背下来的! 可是我难以理解它,是我理解能力差吗? 那个线程安全呢? sturts1—— 必须保证它是线程安全的:那么1 是必须安全的了~1 安全 。 在struts2的解释中这么一句话“不存在线程安全问题”!不存在线程安全问题是安全还是不安全?
直接说那个安全个不安全不就完了。。还那么绕~ 我理解真的很差吗? 说能说下到底那个安全 那个不安全呢? 。没分了!!不多
...全文
335 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
我也绕,等待楼下答复

23,409

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧