- 浏览: 36452 次
文章分类
- 全部博客 (35)
- java (36)
- Toast to C (1)
- Java二进制指令代码解析 (1)
- CHAR (1)
- varchar以及varchar2的区别 (1)
- Java学习笔记(二)----JBoss发展现状 (1)
- Enum的策略模式 (1)
- j2EE开发群 欢迎加入该群一起学习 群号:172429747 (1)
- clipRect 介绍 (1)
- 认识Java程序之对象间消息传递 (1)
- Android的Location功能代码 (1)
- Android的Activity之间的通信 (1)
- 关于提高自己JAVA水平的十大技术讨论(转) (1)
- 推荐三本书 (1)
- C#打印DataGrid中的数据 (1)
- 注意新技术的风险是否会超过获得成功的几率 (1)
- MapXtreme2004代码 简单专题图的显示 (1)
- 在网页中插入RM视频文件的历程 (1)
- 《使用 Microsoft .NET 的企业解决方案模式》读书笔记2 (1)
- xml格式字符串与java对象互转 (1)
- 手机wifi传文件的一简单代码 (1)
- HOWTO: Disable HTTP Methods in Apache (1)
- SQL 笔试题(摘) (1)
- java的ProcessBuilder阻塞问题 (1)
- 现在在郑州做java开发想去深圳 (1)
- Could not find a JavaScript runtime (1)
- 构造方法,重载,多个,无参,参数,this,super (1)
- Servlet多线程 (1)
- 如何使SOLR系统自动AUTO COMMIT (1)
- Linux下Mysql表名区分大小写 (1)
- 好玩的游戏合集~~ (1)
- HashMap源码分析 (1)
- 以一个枢纽值二分一个数组 (1)
最新评论
-
liuyes:
写的有点乱呀
HashMap源码分析 -
chenglinjava:
来北京吧!!!
现在在郑州做java开发想去深圳
?
<div class="Section0">
<p class="p15" style="margin-bottom: 0pt; margin-top: 0pt;">?
<p class="p15" style="margin-bottom: 0pt; margin-top: 0pt;">?
<p class="p15" style="margin-bottom: 0pt; margin-top: 0pt;">[size=12.0000pt; font-family: '宋体';]Servlet采用多线程来处理多个请求同时访问,Servelet容器维护了一个线程池来服务请求。[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]线程池实际上是等待执行代码的一组线程叫做工作者线程(Worker?Thread),Servlet容器使用一个调度线程来管理工作者线程(Dispatcher?Thread)。[/size][size=12.0000pt; font-family: '宋体';][/size]
<p class="p15" style="margin-bottom: 0pt; margin-top: 0pt;">[size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]<span style="color: #ff0000;">二,Servlet容器默认采用单实例多线程的方式来处理请求,这样减少产生Servlet实例的开销,提升了对请求的响应时间。对于Tomcat可以在server.xml中通过<Connector>元素设置线程池中线程的数目。[/size][/size][size=12.0000pt; font-family: '宋体';]</span>
<p class="p15" style="margin-bottom: 0pt; margin-top: 0pt;">[size=12.0000pt; font-family: '宋体';]<span style="color: #ff0000;">三,如何开发线程安全的Servlet??[/size]???????????????????????????????????????????????????????????????????????????????????????????????????????????????[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]?1,变量的线程安全:这里的变量指字段和共享数据(如表单参数值)。[/size][size=12.0000pt; font-family: '宋体';]</span>
<p class="p15" style="margin-bottom: 0pt; margin-top: 0pt;">[size=12.0000pt; font-family: '宋体';]??b,使用同步块Synchronized,防止可能异步调用的代码块。这意味着线程需要排队处理。[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]??在使用同板块的时候要尽可能的缩小同步代码的范围,不要直接在sevice方法和响应方法上使用同步,这样会严重影响性能。[/size][size=12.0000pt; font-family: '宋体';][/size]
<p class="p15" style="margin-bottom: 0pt; margin-top: 0pt;">[size=12.0000pt; font-family: '宋体';]?2,属性的线程安全:ServletContext,HttpSession,ServletRequest对象中属性[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]??ServletContext:(线程是不安全的)[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]???ServletContext是可以多线程同时读/写属性的,线程是不安全的。要对属性的读写进行同步处理或者进行深度Clone()。[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]???所以在Servlet上下文中尽可能少量保存会被修改(写)的数据,可以采取其他方式在多个Servlet中共享,比方我们可以使用单例模式来处理共享数据。[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]??HttpSession:(线程是不安全的)[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]???HttpSession对象在用户会话期间存在,只能在处理属于同一个Session的请求的线程中被访问,因此Session对象的属性访问理论上是线程安全的。[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]???当用户打开多个同属于一个进程的浏览器窗口,在这些窗口的访问属于同一个Session,会出现多次请求,需要多个工作线程来处理请求,可能造成同时多线程读写属性。[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]???这时我们需要对属性的读写进行同步处理:使用同步块Synchronized和使用读/写器来解决。[/size][size=12.0000pt; font-family: '宋体';][/size]
<p class="p15" style="margin-bottom: 0pt; margin-top: 0pt;">[size=12.0000pt; font-family: '宋体';]?3,使用同步的集合类:[/size][size=12.0000pt; font-family: '宋体';]<br>[/size][size=12.0000pt; font-family: '宋体';]??使用Vector代替ArrayList,使用Hashtable代替HashMap。[/size][size=12.0000pt; font-family: '宋体';][/size]
<p class="p15" style="margin-bottom: 0pt; margin-top: 0pt;">[size=12.0000pt; font-family: '宋体';]?5,在多个servlet中对外部对象(比方文件)进行修改操作一定要加锁,做到互斥的访问。?[/size][size=12.0000pt; font-family: '宋体';][/size]
?
发表评论
-
以一个枢纽值二分一个数组
2012-02-08 15:17 867划分算法由两个指针开始,分别指向数组的两头。在左边的指 ... -
HashMap源码分析
2012-02-08 13:33 1114[size=medium;]HashMap源码分析 ... -
好玩的游戏合集~~
2012-02-07 16:19 1049因为刚接触windows phone不久,自己平时收藏 ... -
Linux下Mysql表名区分大小写
2012-02-04 13:58 11441、Linux下mysql安装完后是默认:区分表名的 ... -
如何使SOLR系统自动AUTO COMMIT
2012-02-03 16:49 904转自:http://blog.csdn.net/thu ... -
构造方法,重载,多个,无参,参数,this,super
2012-02-02 14:29 2415构造方法名([参数列表]){ ? [this([参数 ... -
Could not find a JavaScript runtime
2012-02-02 13:19 776My Rails3.1 app worked fine ... -
现在在郑州做java开发想去深圳
2012-01-31 14:43 918 &nb ... -
java的ProcessBuilder阻塞问题
2011-12-28 18:08 1345<span style="color: ... -
SQL 笔试题(摘)
2011-12-28 11:29 1003(1)表名:购物信息 购物人 商品名称 ... -
HOWTO: Disable HTTP Methods in Apache
2011-12-21 14:59 919<h3 class="entry-h ... -
手机wifi传文件的一简单代码
2011-12-20 13:39 1314手机与笔记本传文件的方法有很多种,如果不方便使用蓝牙 ... -
xml格式字符串与java对象互转
2011-12-20 11:34 1435import java.lang.reflect. ... -
《使用 Microsoft .NET 的企业解决方案模式》读书笔记2
2011-12-19 10:39 711第2章 组织模式 面向对象编程的基本元素是类。但是,如 ... -
在网页中插入RM视频文件的历程
2011-12-19 08:59 981俺最早想到的是直接利用Frontpage2003,看看 ... -
MapXtreme2004代码 简单专题图的显示
2011-12-15 14:24 713MapControl1.Map.Clear();< ... -
注意新技术的风险是否会超过获得成功的几率
2011-12-14 18:28 362</span></span> ... -
C#打印DataGrid中的数据
2011-12-14 16:59 1339<span style="" ... -
推荐三本书
2011-12-13 15:19 694推荐最近一直在看的三本书,很好,真的很好,别的也没什么 ... -
关于提高自己JAVA水平的十大技术讨论(转)
2011-12-13 14:29 1023本文来自<font col ...
相关推荐
### servlet多线程详解 #### 一、Servlet容器如何同时处理多个请求 Servlet容器通过采用多线程机制来实现对多个请求的同时处理。这一过程主要依赖于容器内部维护的一个线程池,它由一系列处于待命状态的工作线程...
至于提供的文件"8点25分平安大厦集合旅游人员名单.xls",虽然与Servlet多线程问题无关,但可能是某个实际应用场景中涉及的数据或计划,比如用于统计并发访问的用户信息,或者是记录多线程处理过程中的某些状态信息。...
Java_servlet多线程.pdf
Servlet/JSP 技术由于其多线程运行而具有很高的执行效率,但这也意味着需要非常细致地考虑多线程的安全性问题。 Servlet 的多线程机制是建立在 Java 多线程机制之上的。Servlet 容器会自动使用线程池等技术来支持...
本篇将深入探讨Servlet与多线程的关系,以及如何在Java Web环境中有效地利用多线程。 一、Servlet与多线程基础 Servlet是在Java平台上运行的服务器端组件,主要用于处理HTTP请求。当多个用户同时访问一个Servlet时...
Servlet和Struts Action是两种常见的Java Web开发组件,它们在多线程环境下运行时可能存在线程安全问题。线程安全是指在多线程环境中,一个类或者方法能够正确处理多个线程的并发访问,保证数据的一致性和完整性。 ...
4. **Servlet多线程**:Servlet容器通常会为每个请求创建一个新的线程,因此Servlet需要处理线程安全问题。在Servlet中,不要使用静态变量存储请求相关的数据,除非已经做好了同步控制。 5. **Servlet的转发和...
在这个主题中,我们将深入探讨"Tomcat中多线程对于Servlet处理"的相关知识点,特别关注在5.5.17版本中的实现。 1. **Tomcat的线程模型** Tomcat使用了一个基于Apache Commons Daemon的JVM服务模型,其中包含了...
5. **Servlet多线程模型**:Servlet 2.5默认采用多线程模型,一个Servlet实例可以服务于多个并发请求,提高了服务器性能。但这也要求开发者需要考虑线程安全问题。 6. **Filter过滤器**:过滤器允许在请求到达...
4. **Servlet多线程** 由于Servlet容器会为每个请求创建一个新的线程,因此Servlet必须是线程安全的。开发者需要注意同步访问共享资源,以避免线程安全问题。 5. **Servlet过滤器** 过滤器(Filter)是Servlet ...
Servlet是一种线程不安全的组件,它的线程不安全性体现在多线程环境下共享一个实例变量,导致线程安全问题。下面我们将从Servlet的工作原理说起,详细解释Servlet接收和响应客户请求的过程,并探讨Servlet线程不安全...
5. **Servlet多线程** 由于Servlet容器通常会为每个请求创建一个新的线程,因此Servlet是线程安全的。开发者需要确保在Servlet中处理的任何共享数据都正确地同步,以避免线程安全问题。 6. **Servlet的异步处理** ...
五、Servlet多线程问题 由于Servlet容器通常会为每个请求创建一个新的线程来执行Servlet,所以需要注意线程安全问题。若Servlet内部有共享数据,需使用同步机制,避免数据冲突。 六、Filter与Listener Servlet学习...