Java 异步响应servlet_Servlet 异步处理

web容器会为每个请求分配一个线程,Servlet3.0新增了异步处理,解决多个线程不释放占据内存的问题。可以先释放容器分配给请求的线程与相关资源,减轻系统负担,原先释放了容器所分配线程的请求,其响应将被延后,可以在处理完成后再对客户端进行响应。

一、AsyncContex简介

为了支持异步处理,在ServletRequest上提供了startAsync()方法。可以通过AsyncContext的getRequest()和getResponse()方法取得请求、响应对象,此次对客户端的响应将暂缓至调用AsyncContext的complete()或dispatch()方法为止。

首先要告知此容器支持Servlet异步处理,如:1: @WebServlet(urlPatterns="/some.do", asyncSupported = true)2: public class AsyncServlet extends HttpServlet{3:4: }

例1:异步处理的例子

AsyncServlet.java1: package ServletAPI;2:3: import java.io.IOException;4: import java.util.concurrent.ExecutorService;5: import java.util.concurrent.Executors;6: import javax.servlet.AsyncContext;7: import javax.servlet.ServletException;8: import javax.servlet.annotation.WebServlet;9: import javax.servlet.http.HttpServlet;10: import javax.servlet.http.HttpServletRequest;11: import javax.servlet.http.HttpServletResponse;12:13: /**14: * Servlet implementation class AsyncServlet15: */16: @WebServlet(name = "AsyncServlet", urlPatterns = { "/async.do" },asyncSupported=true)17: public class AsyncServlet extends HttpServlet {18: private static final long serialVersionUID = 1L;19: private ExecutorService executorSe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值