栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Servlet异步请求如何开启

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servlet异步请求如何开启

简介:大家好,我是枫哥,一线互联网的IT民工、资深面试官、Java跳蚤网课堂创始人。拥有多年一线研发经验,曾就职过科大讯飞、美团网、平安等公司。在上海有自己小伙伴组建的副业团队,目前业余时间专注Java技术分享,春招/秋招/社招/跳槽,一对一学习辅助,项目接活开发。

扫码左侧二维码,加入群聊,一起学习,一起进步!

 欢迎关注  收藏 留言 

:文末送福利

目录

1. 背景

2. Servlet同步请求

3. Servlet异步请求

4. 异步Servlet使用方法

5. Spring中的实现例子


1. 背景

在研究长轮询的实现过程,有使用到Servlet3的异步请求。下面就来学习一下Servlet3的异步请求

现在Servlet的版本已经到了5

2. Servlet同步请求

以Tomcat服务器为例:

Http请求到达TomcatTomcat从线程池中取出线程处理到达Tomcat的请求将请求Http解析为HttpServletRequest分发到具体Servlet处理对应的业务通过HttpServletResponse返回处理的数据

 

正常情况下请求模型和上面的模型一样,所有的请求交给Tomcat服务器的线程池处理,整个动作处理完成才释放回线程池。
这里就存在了一个问题如果后期的业务处理时间比较长。那么处理请求的线程就会被一直占用。当请求越来越多被占用的线程也会越来越多。直到被耗尽线程池中所有的线程。后续进来的就一直被阻塞等待线程来处理。

当用户不关心提交的返回可以定义业务处理线程池,前端请求提交后,Tomcat线程将处理提交给业务线程池立即返回。Spring 中的异步任务(@Async)就是这样的。

3. Servlet异步请求

同样以Tomcat服务为例:

将请求Http解析为HttpServletRequest分发到具体Servlet处理,将业务提交给自定义业务线程池,Tomcat线程立刻被释放。当业务线程将任务执行结束,将会将结果转交给Tomcat线程池。通过HttpServletResponse返回处理的数据

引入异步Servlet3整体流程:

使用异步 Servelt,Tomcat 线程仅仅处理请求解析动作,所有耗时较长的业务操作全部交给业务线程池,所以相比同步请求, Tomcat 线程可以处理 更多请求。虽然将业务交给了业务流程处理,但是前端还在等待结果返回(同步等待返回)。

异步处理,前端会同步等待结果返回。很多人会觉得异步请求会返回更快。其实不然由于异步存在线程的切换。所有返回时间会比同步的慢。

 

虽然没有降低相应时间但是还是有其他明显的优点:

可以处理更高并发连接数,提高系统整体吞吐量请求解析与业务处理完全分离,职责单一自定义业务线程池,我们可以更容易对其监控,降级等处理可以根据不同业务,自定义不同线程池,相互隔离,不用互相影响

4. 异步Servlet使用方法

使用异步Servlet只需要三步:

    HttpServletRequest#startAsync() 获取 AsyncContext 异步上下文使用自定义业务线程池处理业务AsyncContext#getResponse() 返回处理结果给前端,然后调用 AsyncContext#complete()

5. Spring中的实现例子

代码如下图:

    开启异步Servlet模拟业务执行返回结果给前端

前面有说过前端是一直在同步等待的我们通过运行代码来验证一下。结果如下图:

 感谢大家,坚持看完,既然选择了这条路,那就一起加油,一起学习!如果需要学习资源,实战面试资料,项目资源。关注公众号:IT枫斗者,根据关键字领取对应的资料福利!咨询解决问题,公众号私聊枫哥,备注来意。

回复:java全套学习资源

回复:面试资料

回复:枫哥简历

回复:程序员表白神器               

(从此告别程序员单身狗!)

回复:程序员兼职网站

回复:枫哥666                             

( 获取66套项目实战资料,大厂面试视频)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727376.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号