爱陪小樱桃

导航

 

HTTP请求:servlet3.0之前是一个线程从头处理到尾

servlet3.0之后,提供了异步处理;

可以选择容器分配给请求的线程与相关资源,减轻系统负担,从而增加吞吐量

其实服务端的异步还是同步处理对于客户端而言是不可见的,不会因为使用了异步接口的返回就不一样了,另外对于:单个请求而言,使用异步接口会导致响应事件比同步大,但是不特别明显,具体后文分析。

线程池:

异步请求,不会一直占用请求的主线程(Tomcat容器中处理请求的线程),而是通过一个其他的线程来处理异步线程,也是正是如此,在相同的最大请求配置下,异步请求由于迅速的释放了主线程,所以才能提高吞吐量。
这里的其他线程,我们一般不使用默认的,都是根据自身的情况提供一个线程池供异步请求使用

什么时候使用异步请求:
异步请求能提供吞吐量,这个是建立在相同配置(这里的配置指的是:最大连接数,最大工作线程数)的情况下,因此并不是说任何接口都可以使用异步。
比如:一个请求是处理大量的计算,总之是处理这个请求的业务方法时候CPU是没有休息的,这种情况使用异步请求就没有意义了,因为异步请求Tomcat只是把异步请求从一个贤臣搬迁到另一个线程,

真正使用异步的请求的是:大量的CPU是休息的,

由于异步请求:增加了更多的下城切换,(同步请求是同一个线程一直处理),所以理论会增加接口耗时,但是这个耗时很短。

posted on 2025-08-13 20:24  cherry小樱桃  阅读(8)  评论(0)    收藏  举报