当前位置: 首页 > 知识库问答 >
问题:

Spring Boot异步方法如何使用ThreadPool处理请求

东郭宏朗
2023-03-14

我不明白异步是如何工作的,我知道webserver有自己的线程池来处理多个请求。当我们使用spring boot实现异步web服务并使用TaskExecutor配置“n”个线程时,是否意味着为每个线程创建n个线程作为请求?

为了澄清,服务器将从线程池中向线程分配一个请求。所以当这个线程开始执行并调用一个用@asynch标记的函数时,它可以为每个传入线程创建另一个“n”个线程来处理异步工作。请让我知道我的理解是否正确。

如果我理解的是正确的,那么如何决定应该创建多少数量的池大小?有人能举个例子吗。

共有1个答案

孟谭三
2023-03-14

有两个东西,一个是一个tomcat线程池,每个请求都从其中获取一个线程并被处理(这在server.tomcat.max-threads中配置),还有一个单独的线程池,用于运行@AYNC任务。当您运行一个注释为async的方法(实际上是task),这将创建一个任务并在async队列中等待。初始请求不会被阻止,如果您不等待异步完成,它将返回并继续执行任务。简单地说,用@Async注释一个方法会使它在一个单独的线程中执行,调用者不会等待完成。

 类似资料:
  • Spring MVC 3.2开始引入了基于Servlet 3的异步请求处理。相比以前,控制器方法已经不一定需要返回一个值,而是可以返回一个java.util.concurrent.Callable的对象,并通过Spring MVC所管理的线程来产生返回值。与此同时,Servlet容器的主线程则可以退出并释放其资源了,同时也允许容器去处理其他的请求。通过一个TaskExecutor,Spring M

  • 本文向大家介绍angularjs 处理多个异步请求方法汇总,包括了angularjs 处理多个异步请求方法汇总的使用技巧和注意事项,需要的朋友参考一下 在实际业务中经常需要等待几个请求完成后再进行下一步操作。但angularjs中$http不支持同步的请求。 解决方法一: 解决方法二: then中的方法会按顺序执行。 解决方法三: $q.all方法第一个参数可以是数组(对象)。在第一参数中内容都执

  • 问题内容: 假设我有某种游戏。我有一个buyItem函数,如下所示: 如果我对该路由进行垃圾邮件处理,直到扣除用户余额(第二次查询),则用户余额仍为正。 我尝试过的 问题是将在第一〜5项要求。因此,这也不起作用。 我们如何处理这种情况?如果重要的话,我正在使用Sails.JS框架。 问题答案: 通过该方法,Sails 1.0现在具有完整的事务支持。例: 更新资料 正如一些评论者所指出的,启用连接池

  • 用mockito模仿异步(< code>@Async)方法的最好方法是什么?提供以下服务: 莫基托的验证如下: 测试方法上面将始终抛出: 如果我从方法中删除,则不会发生上述异常。 Spring Boot版本:1.4.0.RELEASE Mockito版本:1.10.19

  • 问题内容: 我是React JS和Redux的新手,它实在太庞大了,无法继续使用。我正在尝试使用Axios发出POST请求,但无法执行。可能是容器文件中缺少某些内容。下面是代码。检查plnkr 更新: 提交后,我收到@@ redux-form / SET_SUBMIT_SUCCEEDED消息。但是,当我检查“网络”标签时,看不到对API的调用。而且,当我安慰提交的值时,我只会看到名称和全名值。它不

  • 本文向大家介绍SpringBoot异步任务使用方法详解,包括了SpringBoot异步任务使用方法详解的使用技巧和注意事项,需要的朋友参考一下 步骤,如图所示: 1.添加异步任务业务类 2.添加测试控制器 3.添加启动类 4.右键项目Run As启动,访问url 结果: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。