博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts 1 和 Struts 2 的线程安全
阅读量:4221 次
发布时间:2019-05-26

本文共 599 字,大约阅读时间需要 1 分钟。

总的来说,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的线程安全。

转载地址:http://cclmi.baihongyu.com/

你可能感兴趣的文章
内存优化总结:ptmalloc、tcmalloc和jemalloc
查看>>
C语言获取文件的SHA1哈希值
查看>>
程序在内存中运行的奥秘
查看>>
深入理解C/C++混合编程(关于#ifdef __cplusplus extern "C" {...}的用法)
查看>>
Linux 下几款程序内存泄漏检查工具
查看>>
Linux 下几款程序内存泄漏检查工具【转】
查看>>
strcmp,stricmp,strcmpi,strncmp,strnicmp,strncmpi,strcat,strncat比较
查看>>
zlog1使用手册
查看>>
Source Insight 常用设置和快捷键大全
查看>>
python笔记(一)获取当前目录路径和文件
查看>>
Python内存管理及释放
查看>>
如何手动释放Python的内存
查看>>
一个人没有出息的九大表现,现在知道还不算晚
查看>>
各种池---内存池的高效实现(C语言)
查看>>
将C语言宏定义转换成字符串!
查看>>
动态调度
查看>>
初创企业在发展过程中经常会陷入这些专利误区,你有没有中招?
查看>>
手把手教你写专利申请书/如何申请专利
查看>>
【图结构专题】有向图
查看>>
徐家骏是华为数据中心的头,技术超级牛人,一级部门总监,华为副总裁,年收入过千万。
查看>>