`

servlet,struts-x线程安全解读

阅读更多
线程安全:
   如果代码所在的进程中有多个线程同时运行,而这些线程可能会同时运行这段代码。如果每次运行的结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。

   servlet是多线程的,同时一个servlet实现类只会有一个实例对象,也就是说是单例,所以多个线程是可能会访问同一个servlet实例对象的。
 
   线程安全问题都是由于全局变量及静态变量引起的。

一、servlet和struts1
    通常情况下,系统只能生成servlet的单一实例之后,为每个用户请求建立新的线程。如果很多请求同时到来,那么多个线程可能会并发的访问同一个servlet对象。因此,必须小心同步丢字段以及实例变量和其他共享数据的访问,因为多个线程可能同时对同一数据进行访问。所以,使用全局变量会产生不安全的结果。struts1也是这种单例模式。
 
   servlet和struts1都是单实例,多线程,在不加锁的情况下尽量不要使用全局变量带来线程不安全的变量,只有请求局部变量时线程安全。

二、struts2
    struts2本身就是多实例,单线程,可以说本事就是线程安全的。



    
分享到:
评论

相关推荐

    actionPKservlet

    - **线程安全性问题**:由于Servlet是单实例多线程的,所有请求共享同一个Servlet实例,这就可能导致线程安全问题。例如,如果在Servlet中定义了成员变量,那么这些变量就可能被不同的线程访问和修改,从而导致数据...

    精通struts2

    此外,还对比了Struts2与Struts1的区别,涉及Servlet依赖、Action类、验证、线程模式、可测性、捕获输入等方面。 第三章介绍了如何配置Struts2的开发环境,从JDK1.6的安装到Eclipse的使用,再到应用服务器Glassfish...

    spring struts hibernate 自己整理的 很不错 收集了许多题型

    根据给定的文件标题、描述、标签以及部分内容,我们可以提炼出关于Spring、Struts和Hibernate这三个框架的关键知识点,以下是对这些知识点的详细解读: ### Hibernate的重要性及操作流程 #### 为何选择Hibernate?...

    新手必看Java重要面试题,有帮助

    - **经典单例模式**:通过私有构造函数和静态工厂方法实现线程安全的单例实例。 - **代码示例**: ```java public class ClassicSingleton { private static ClassicSingleton instance = null; protected ...

    java毕业设计常用参考文献.docx

    下面将对这些文献进行详细解读,并提炼出其中的关键知识点。 ### 软件工程相关文献 1. **《JSP实用案例教程》** - 冯燕奎, 赵德奎 - **知识点**: - JSP的基本概念和技术特点。 - 实用的JSP开发案例分析。 - ...

    java面试指南

    J2EE框架章节包括了对Servlet&JSP、Struts1.x、Struts2.x、Hibernate、Mybatis和Spring等流行的Java企业级技术框架的讲解。例如,Servlet的生命周期包括初始化、请求处理和销毁三个阶段,Struts2工作原理是基于拦截...

    Tomcat与java web 开发技术详解-孙卫琴-第二版-541-761

    这可能涵盖如何配置SSL支持以实现安全的HTTPS连接,以及通过调整Tomcat的配置参数来提高服务器性能,如最大线程数、空闲超时时间等。 最后,故障排查和日志分析是任何开发者都需要掌握的技能。书中可能提供了识别和...

    JSP试卷大全各类问题应有尽有

    而struts1.x框架中的action处理类和普通的Filter则需要根据具体实现来判断其线程安全性。 6. **JSP编码设置**: `;charset=utf-8" pageEncoding="GBK"%>`指示JSP页面的输出内容采用UTF-8编码,但显示在浏览器的...

    java学习路线

    - **多线程**:多线程是Java的一个重要特性,学会如何创建和管理线程,以及如何实现线程间的通信。 - **网络编程**:了解TCP/IP协议栈的基本原理,掌握Socket编程。 - **反射与注解**:反射是Java动态特性的体现,...

    java系列资料大全

    以下是对这些资源的详细解读: 1. **Struts**: Struts是基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了构建用户交互界面、业务逻辑和数据存储之间的通信。Struts提供了控制器Servlet,处理...

    基于web的网上选课系统的开题报告.pdf

    在线程安全和事务管理方面,ThreadLocal可以确保每个线程都有自己的变量副本,避免线程间的并发问题。 从以上分析来看,这份开题报告所涉猎的网上选课系统是一个综合运用现代web开发技术的项目。报告中的内容虽然...

    电影信息平台的设计与实现.pdf

    1. Java语言:Java是一种广泛使用的面向对象的编程语言,具有跨平台性、安全性、面向对象和多线程等特性。在本项目中,Java是整个电影信息平台的开发语言,负责编写后端逻辑、处理数据库交互以及前后端的数据传递等...

    Java基础视频云分享链接

    - **多线程编程**:学习Java中的多线程机制,理解如何创建和管理线程,这对于开发高性能的应用程序非常重要。 #### Android开发相关知识点 - **Android SDK介绍**:了解Android SDK的基本构成,包括各种工具和APIs...

    java面试复习大纲

    4. Servlet:了解Servlet的生命周期、线程安全问题、接口类型、体系结构及其在Web应用中的作用。 5. Filter和Listener:掌握过滤器和监听器的生命周期、应用场景以及如何处理请求和响应。 6. JSP和EL表达式:理解...

    2018 Java面试题总结

    以下是对这些主题的详细解读: 1. **数据库篇**: - SQL基础:了解SQL语言的基本语法,如SELECT、INSERT、UPDATE、DELETE操作,以及JOIN、子查询、索引和事务处理。 - 数据库设计:理解关系型数据库的概念,包括...

    Java程序员面试笔试宝典-何昊

    以下是对Java语言特点的详细解读: 1. **面向对象**:Java是一种纯面向对象的编程语言,它将现实世界中的实体抽象为类,类是对象的模板,而对象则是类的实例。面向对象编程(OOP)的核心思想包括封装、继承和多态,...

    JAVA面试题集整理

    这种设计有助于提高性能,尤其是在多线程环境中,因为不可变对象是线程安全的。 2. **字符串反转实现**: - **问题**:如何反转一个字符串,例如将 "abccba" 反转为 "abccba" 或者 "bbbwlirbbbbbbhhtccc" 反转为 ...

    交易平台系统JSP源码Java源码

    总的来说,要理解和学习这个交易平台系统的JSP源码,你需要具备扎实的Java基础,理解Web开发的核心概念,熟悉JSP、Servlet和数据库交互,同时,能够解读项目结构和运行说明。通过深入研究,你可以从中学到如何构建一...

    Java.Web整合开发王者归来 源码

    以下是对该书内容的详细解读: 1. **Java基础**:Java作为Web开发的基石,基础部分会涉及Java语言的语法、面向对象编程概念、异常处理、集合框架(如ArrayList、LinkedList、HashMap等)以及IO流和多线程。这些是...

    java面试题(20211007014846).pdf

    Java面试题涵盖了许多核心概念,以下是对这些知识点的详细解读: 1. **J2EE**:Java 2 Platform, Enterprise Edition,是Java平台的企业版,主要用于构建和部署分布式企业级应用,包括Web服务、应用程序服务器、...

Global site tag (gtag.js) - Google Analytics