Servlet3.0如何实现异步请求

2024-11-20 06:23:57

1、在Servlet3.0之前,Servlet才采用Thread-Per——Request的方式处理请求。即每一次http请求都由一个线程从头到尾负责处理。如果一个请求需要进行IO操作,比如访问数据库,调用第三方服务接口等,那么其所对应的线程将同步地等待IO操作完成,而IO操作是非常慢的,所以此时的线程并不能及时的释放回线程池以供后续使用,在并发量越来越大的情况下,这将带来严重的新能问题。即便像Spring、struts这样的高层框架也脱离不了这样的问题,因为他们都是建立在Servlet之上的。为了解决这样的问题,Servlet3.0引入了一步处理,然后在Servlet3.1中又引入了非阻塞IO来进行增加一步处理的性能。

Servlet3.0如何实现异步请求

3、如果要支持异步请求,需要在WebServlet注解中开启异步支持。@WebServlet(value="async",asyncSupported=true)

Servlet3.0如何实现异步请求

5、运行应用,查看主线程和异步线程的执行情况。

Servlet3.0如何实现异步请求
猜你喜欢