http://blog.csdn.net/irelandken/article/details/6935659
关于Servlet的并发响应
从http://blog.csdn.net/irelandken/article/details/6927713我们分析了Servlet的生命周期
Servlet的生命周期是这个Servlet被访问时构造,项目被Remove部署时才终止…
那么我们现在再来看看,当多个用户以doget/dopost方式同时访问同一个Servlet时,那个响应情况是怎么的呢??是一个一个来执行?还是多线程并行来执行呢??
1: 新建web Project
2:新建文件: Servlet_MutiThreads.java
- package myServlet;
- import java.io.IOException;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class Servlet_MutiThreads extends HttpServlet {
- private static final long serialVersionUID = 1L;
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- System.out.println(Thread.currentThread().getName() + " is running");
- try {
- Thread.sleep(10*1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println(Thread.currentThread().getName() + " is ------------finished");
- }
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- doGet(req,resp);
- }
- }
3.XML加入:
- <servlet>
- <servlet-name>Servlet_MutiThreads</servlet-name>
- <servlet-class>myServlet.Servlet_MutiThreads</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Servlet_MutiThreads</servlet-name>
- <url-pattern>/myServlet/Servlet_MutiThreads</url-pattern>
- </servlet-mapping>
那么这个servlet的访问的url是: http://localhost:8080/Servlet_MutiThreads//myServlet/Servlet_MutiThreads
这个Servlet里,每次访问都sleep 10s,就是说每个访问的持续时间为10s….(这里为不什么不用wait呢? 是因为sleep时,尽管线程休眠了,但还是不会释放锁的,而这正是我们想要的,而wait是会释放的)
我们有在地址栏里多次访问这个URL(连续按多次enter):
我们可以看到,这个访问是并发的,并Servlet的响应也是并发的,查看资料:
Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。
当客户端第一次请求某个Servlet时,Servlet 容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。
Servlet容器会自动使用线程池等技术来支持系统的运行
我们就验证了Servlet能并发响应多个用户的访问
相关推荐
Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 ...
Java Servlet Filter:基于 Java Servlet Filter 技术实现 URL 重写功能,与 Java Web 应用无缝集成,方便快捷。 配置文件支持:支持通过 XML 或 Properties 文件配置 URL 重写规则,简化配置流程,提高可维护性。 ...
3. 并发性改进:Tomcat 8 对并发性进行了改进,包括更好的线程管理、请求处理和响应处理等方面的优化。 4. EL 3.0支持:Tomcat 8 支持最新的EL(表达式语言)3.0规范,提供了更多的表达式功能和语言特性。 5. JSP ...
1.1 高并发原则 3 1.1.1 无状态 3 1.1.2 拆分 3 1.1.3 服务化 4 1.1.4 消息队列 4 1.1.5 数据异构 6 1.1.6 缓存银弹 7 1.1.7 并发化 9 1.2 高可用原则 10 1.2.1 降级 10 1.2.2 限流 11 1.2.3 切流量 12 1.2.4 可回滚...
2. 请求处理阶段:在这个阶段,Tomcat 会对每个请求进行处理,包括解析请求、执行 servlet、返回响应等。 七、Tomcat 顶层架构 Tomcat 的 顶层架构主要包括以下几个部分: 1. Connector:负责处理请求和响应的...
高并发- HTTP缓存浏览器缓存是指当我们使用浏览器访问一些网站页面或者http服务时,根据服 务端返回的缓存设置响应头将响应内容缓存到浏览器,下次可以直接使用缓存内容或者 仅需要去服务端验证内容是否过期即可。...
Servlet:使用Java Servlet技术实现服务器端的业务逻辑和数据处理,接收和响应客户端的请求。 WebSocket:采用WebSocket技术实现客户端与服务器之间的实时双向通信,支持消息的实时推送。 数据库:选择适当的数据库...
1. 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才 结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己 在不...
Servlet:使用Java Servlet技术实现服务器端的业务逻辑和数据处理,接收和响应客户端的请求。 数据库:选择适当的关系型数据库(如MySQL、PostgreSQL等)存储用户信息、财务记录和预算数据。 前端技术:结合HTML、...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
1)支持客户端的网页请求,进行并发处理,缩短请求的响应时间。 2)可响应GET、POST(html、servlet、jsp)页面的请求。 3)对每次网页请求都进行过滤(filter)。 4)支持request、response的跳转请求。 5)可维持一个...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
MySQL通过高效的缓存机制、查询优化器以及对硬件资源的有效利用,保证了在高负载情况下的稳定性和快速响应。它支持水平扩展(如通过分片、复制等技术)和垂直扩展(如增加硬件资源),以应对大规模数据存储和高并发...
3:多台:不同对象对统一消息作出不同响应称之为多态 4:抽象:忽略与当前主题无关的那些方面,将注意力集中在与当前目标有关的方面 运行时异常和一般异常有何异同? 答:运行时异常时(JVM)java虚拟机在运行过程...