`
wangzhongjie
  • 浏览: 41909 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Action中的成员变量是否线程安全

    博客分类:
  • java
阅读更多
一直以来一直存在这样的疑问,作为成员变量,Action中的dao是否存在线程安全的问题,多线程同时访问是否存在安全性问题呢,path是否也存在线程安全问题呢
public class UserManagerAction extends Action {
         private UserDAO dao = new UserDAO();           
         private String path = "";
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		path = request.getParameter("path");
		String forward = "success";
		if("add".equals(path)){
		   //业务代码....
		}
		
		return mapping.findForward(forward);
	}

}


分享到:
评论
5 楼 runjia1987 2008-08-20  
wangzhongjie 写道

        
         private UserDAO dao = new UserDAO();           
         private String path = "";
	


4 楼 sunrie 2008-08-20  
应该是默认配置的话是线程安全的吧,可以配置为单例模式,那样肯定就不一样了吧
3 楼 l1i2n3y4u5n6 2008-08-19  
是线程安全的,每个请求都会为他创建一个实例.
2 楼 ddandyy 2008-05-29  
去网上找
最基础的事
很多地方都说了

P.S: 建议看提问的智慧
你问的问题本身就不清不楚的
1 楼 wangzhongjie 2008-05-29  
艾。。。被扔到入门讨论版本,就没有人管了,失望。。。。。。。。。。。

相关推荐

    servlet与Struts action线程安全问题分析

    Servlet和Struts Action是两种常见的Java Web开发组件,它们在多线程环境下运行时可能存在线程安全问题。线程安全是指在多线程环境中,一个类或者方法能够正确处理多个线程的并发访问,保证数据的一致性和完整性。 ...

    Action是否线程安全

    可以使用`SwingWorker`来执行耗时任务,使其在后台线程中运行。 - **线程间通信**:使用`java.util.concurrent`中的`BlockingQueue`或`CountDownLatch`等工具进行线程间的协调和通信。 总之,`Action`的线程安全性...

    struts1,struts2,webwork,线程安全问题

    - 由于每次请求都会创建新的`Action`实例,因此`Action`类中的成员变量对于每个请求来说都是独立的,从而自动解决了线程安全问题。 - 这种做法降低了开发人员需要关注线程安全问题的复杂度,提高了开发效率。 ###...

    servlet与Struts action线程安全问题分析(pdf)

    在上述示例中,假设用户A和B同时访问该Servlet,他们的请求被分配到了不同的线程中。但由于`output`变量的修改没有及时同步到主内存中,导致用户A的信息出现在用户B的浏览器上,反之亦然。 #### 四、解决方案 针对...

    Struts线程安全

    在Struts框架中,除了Action类之外,其他被Action调用的对象(如值对象、领域模型类)是否可以安全地使用实例变量取决于这些对象的生命周期。如果每次请求时都会创建新的实例,则这些实例对于每个请求来说是唯一的,...

    Struts中action线程安全问题解析

    2. **使用线程局部变量(ThreadLocal)**:如果必须在Action中存储请求相关的状态,可以使用ThreadLocal来确保每个线程有自己的变量副本。 3. **配置Struts以创建新的Action实例**:虽然不是默认行为,但可以通过...

    Unity3D中的多线程及使用多线程1

    在上面的例子中,我们使用 lock 关键字来确保只有一个线程可以在特定时间内访问变量 a。 Unity3D 中的多线程也可以使用 Loom 库来实现。Loom 库提供了两个主要的功能:RunAsync 和 QueueOnMainThread。RunAsync ...

    Cpp_Concurrency_In_Action(本书是基于C++11新标准的并发和多线程编程深度指南。),非扫描版

    C++11引入了对并发编程的原生支持,包括线程库、互斥量、条件变量、原子操作以及future等概念,这些都极大地简化了在C++中处理多任务和多处理器编程的方式。本书首先会介绍并发的基本概念,如进程与线程的区别,以及...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例),可直接运行

    9. **线程局部存储**:`ThreadLocal<T>`类允许在线程中创建局部变量,每个线程拥有自己的副本,互不影响。 10. **线程优先级**:虽然可以设置线程优先级,但不推荐频繁使用,因为操作系统调度策略可能使得高优先级...

    C#委托类的方式实现了控件无法在线程中访问

    这样,我们就可以在后台线程中安全地调用这些方法来更新控件: ```csharp ThreadPool.QueueUserWorkItem(_ => { ControlInvoker.SetText(button1, "已更新文本"); ControlInvoker.SetEnabled(button1, false); })...

    vb.net 委托与非委托对线程的影响

    非委托方式通常是指直接在子线程中修改UI元素,这是不推荐的,因为Windows Forms和WPF这样的UI框架不是线程安全的。如果在非UI线程上直接操作UI控件,可能会导致数据竞争、死锁或其他不可预测的错误。例如,尝试在...

    Java面试题线程部分.docx

    Java线程是程序执行的基本单元,它在Java中扮演着至关重要的角色,特别是在多任务并行处理和提高应用程序性能方面。...然而,开发者仍需关注Controller中的线程安全问题,尤其是当Controller中存在成员变量时。

    C++ Concurrency In Action 中英文对照合集

    3. **线程安全**:书中深入分析了线程安全的概念,如何识别和避免数据竞争,以及如何编写线程安全的代码。 4. **原子操作**:C++11引入了原子操作,这是实现无锁编程的关键。书中讲解了如何使用原子类型来构建高效...

    C#多线程编程实战源码

    10. **线程安全的数据结构**:`System.Collections.Concurrent`命名空间提供线程安全的数据结构,如`ConcurrentQueue`、`ConcurrentStack`和`ConcurrentDictionary`,它们在多线程环境中提供了高效且安全的并发访问...

    多线程委托实例

    在C#中,委托是一种类型,它代表了一个方法指针,允许我们将方法作为参数传递给其他方法或存储在变量中。这使得我们可以动态地调用方法,实现回调机制或者事件处理。在多线程上下文中,委托经常用于异步操作,比如...

    java struts2学习笔记之线程安全

    然而,尽管Action本身是线程安全的,但Action中的依赖(如服务层对象、DAO对象等)可能不是。如果这些依赖在多个请求之间共享,那么它们仍需要考虑线程安全。例如,如果一个Service对象被声明为静态的,那么在多线程...

    线程三个随机数

    线程之间的通信可能通过共享变量、锁(如`Monitor`、`Mutex`或`Semaphore`)或者线程安全的数据结构(如`ConcurrentQueue`或`ConcurrentStack`)来实现,以确保数据的一致性和完整性。 接着,随机数的生成。在...

    使用线程的计时器

    总结来说,本文介绍了如何在C#中使用线程来创建一个倒计时程序,强调了线程的创建、执行逻辑、跨线程UI更新以及安全结束线程的重要性。通过这种方式,我们可以实现一个高效且响应迅速的倒计时功能,尤其适合那些对...

Global site tag (gtag.js) - Google Analytics