Java Servlet异步请求开启的示例分析


这篇文章主要为大家展示了“JavaServlet异步请求开启的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaServlet异步请求开启的示例分析”这篇文章吧。在研究长轮询的实现过程,有使用到Servlet3的异步请求。以Tomcat服务器为例:Http请求到达TomcatTomcat从线程池中取出线程处理到达Tomcat的请求将请求Http解析为HttpServletRequest分发到具体Servlet处理对应的业务通过H免费云主机域名ttpServletResponse返回处理的数据正常情况下请求模型和上面的模型一样,所有的请求交给Tomcat服务器的线程池处理,整个动作处理完成才释放回线程池。
这里就存在了一个问题如果后期的业务处理时间比较长。那么处理请求的线程就会被一直占用。当请求越来越多被占用的线程也会越来越多。直到被耗尽线程池中所有的线程。后续进来的就一直被阻塞等待线程来处理。当用户不关心提交的返回可以定义业务处理线程池,前端请求提交后,Tomcat线程将处理提交给业务线程池立即返回。Spring 中的异步任务(@Async)就是这样的。同样以Tomcat服务为例:将请求Http解析为HttpServletRequest分发到具体Servlet处理,将业务提交给自定义业务线程池,Tomcat线程立刻被释放。当业务线程将任务执行结束,将会将结果转交给Tomcat线程池。通过HttpServletResponse返回处理的数据引入异步Servlet3整体流程:使用异步 Servelt,Tomcat 线程仅仅处理请求解析动作,所有耗时较长的业务操作全部交给业务线程池,所以相比同步请求, Tomcat 线程可以处理 更多请求。虽然将业务交给了业务流程处理,但是前端还在等待结果返回(同步等待返回)。异步处理,前端会同步等待结果返回。很多人会觉得异步请求会返回更快。其实不然由于异步存在线程的切换。所有返回时间会比同步的慢。虽然没有降低相应时间但是还是有其他明显的优点:可以处理更高并发连接数,提高系统整体吞吐量请求解析与业务处理完全分离,职责单一自定义业务线程池,我们可以更容易对其监控,降级等处理可以根据不同业务,自定义不同线程池,相互隔离,不用互相影响使用异步Servlet只需要三步:HttpServletRequest#startAsync() 获取 AsyncContext 异步上下文使用自定义业务线程池处理业务AsyncContext#getResponse() 返回处理结果给前端,然后调用 AsyncContext#complete()代码如下图:开启异步Servlet模拟业务执行返回结果给前端前面有说过前端是一直在同步等待的我们通过运行代码来验证一下。结果如下图:代码地址:github.com/mxsm/spring…在异步对象完成、超时、错误或者开始时监听以上是“JavaServlet异步请求开启的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注百云主机行业资讯频道!

相关推荐: 微信积分商城小程序如何搭建

这篇文章主要为大家展示了“微信积分商城小程序如何搭建”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信积分商城小程序如何搭建”这篇文章吧。 1,要制作积分商城小程序可以用到微信人家平台,微信第三方平台可以帮助我们实…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/29 17:07
下一篇 09/29 17:08

相关推荐