浏览 288 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-05-01
在看dlog4j的源代码时,有如下部分:
UserForm类: public class UserForm extends DlogActionForm implements Cloneable{ ………………….. public static UserForm getLoginUser(HttpServletRequest request){ SiteForm sf = SiteManager.getCurrentSite(request); if(sf!=null) return (UserForm) request.getSession().getAttribute(sf.getName()+'_'+UserForm.KEY); return null; } 父类: public abstract class DlogActionBase extends ActionExtend { ………………….. public static UserForm getLoginUser(HttpServletRequest req){ return UserForm.getLoginUser(req);//调用UserForm类的getLoginUser方法 } 子类: public class AdminActionBase extends DlogActionBase { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception { UserForm user = getLoginUser(req);//调用父类的getLoginUser方法 ………………….. 我的理解是:每一个请求request拥有自己的内存空间,以上的代码都是对request进行操作,所以,虽然他们是static方法,但是他们是线程安全的。 如果有个actionForm如下: public class AactionForm extends BactionForm implements CInterface{ ………………….. public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception { Int value = req.getAtrrubute(“value”);//从请求中取得value的值 该值可能是1,也可//能是2 String str =AnyClass.getFunction(value);//AnyClass可以是任意的类,包括父类、 //Form类、工具类等等 在AnyClass类中有如下代码: Public static String getFunction(int I ){ String str = “”; If(I = = 1) str = “the answer is 1”; Else if(I == 2){ str = “the answer is 2”; return str; } 我的理解是:上面这段代码不是线程安全的,因为getFunction中的代码不是以某个request相关的,在多线程访问机制下会导致错误问题。 请问一下大家我的理解是否正确?;另外在java web编程的过程中,关于多线程处理部分有什么需要提别注意的地方?都有什么经验或教训以及如何更好的处理能否分享一下? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
| 返回顶楼 | |
|
时间:2008-05-04
我印象中,struts1的时候action是单例的,所有的request都共享一个action实例。
也就是说有可能两个request同时进入action的某个代码块。 |
|
| 返回顶楼 | |
|
时间:2008-05-09
wqq686 写道 因为getFunction中的代码不是以某个request相关的,在多线程访问机制下会导致错误问题。 请问一下大家我的理解是否正确?;另外在java web编程的过程中,关于多线程处理部分有什么需要提别注意的地方?都有什么经验或教训以及如何更好的处理能否分享一下? getFunction应该没有问题,它始终操作的是Auto变量类型的值。 |
|
| 返回顶楼 | |






