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

Spring启动异步

仇高韵
2023-03-14

我不确定Spring boot异步是如何工作的?我知道webserver有自己的线程池,每个请求都由来自池的线程处理。现在,当我们用spring boot实现异步web服务并配置10个线程时,这是否意味着线程内部有线程?为了澄清,web服务器将向线程分配一个请求。现在当这个线程开始执行并调用一个用@Asynch标记的服务/函数时,它可以创建多个线程来处理请求。请让我知道我的理解是否正确。

共有1个答案

郭曾笑
2023-03-14

它不是一个线在另一个线。@Async将使请求在单独的线程中执行,并且请求的调用方不会等待被调用的方法完成

要启用异步,可以通过添加,

@Configuration
@EnableAsync
public class AsyncExample {
   // Define a threadpool executor if needed,
   @Bean(name = "threadPoolTaskExecutor")
   public Executor threadPoolTaskExecutor() {
      return new ThreadPoolTaskExecutor();
   }
}

然后您可以使用定义的线程池执行器定义异步方法,如下所示,

@Async("threadPoolTaskExecutor")
public void asyncMethodWithConfiguredExecutor() {
   // Method Definition
}
 类似资料:
  • 我有一个spring bootendpoint,它从POST请求的Http请求体中获取用户的输入,并将其持久化到MySql数据库中。 生成成功,但当我尝试使用命令运行应用程序时 它会抛出一个异常,而应用程序不会启动。 我是新的spring boot,没有发现这个例外,所以没有很多事情,我试图解决这个问题。仍在等待一个线索或方向。 以下是服务器启动时的日志文件:删除了一些不相关的日志以保持字符限制:

  • 我的Spring boot和Hibernate项目中有Javers实现。但是,有时javerscommit失败,这也会回滚我的业务数据库事务,因此API调用失败。 是否有可能实现Javers异步提交,这样即使Javers提交有一些问题,我的业务事务也不会生效,因此,API调用将成功? 非常感谢。

  • 我正在使用Spring Boot版本2.1.9。带有Web、会话、安全、jdbc和jpa启动器的RELEASE。在我的应用程序中一切正常,直到我尝试覆盖默认会话超时值,application.properties中有以下行: 如果添加这一行,在启动Spring时,我会得到以下错误: 我还尝试了不同的格式,如180s或PT180S,但都不起作用。根据Spring文档或同一文档的其他变体,只有整数的版

  • 当我尝试运行Springboot eureka客户端时,我发现以下运行时异常 组织。springframework。豆。工厂BeanDefinitionStoreException:未能加载bean类:;嵌套的异常是java。lang.IllegalStateException:找到注解@EnableDiscoveryClient,但没有实现。你忘了带开胃菜吗?

  • 我正在使用tomcat 1.7,它已经工作得很好了。今天我重新启动tomcat,让我低于StackOverflow错误。错误信息看起来像log4j循环。 任何帮助都将不胜感激。 我有日志库

  • 我正在使用一个Maven多模块,其中一场战争取决于另一场战争。 Spring Boot webapp依赖于只提供html文件的基本webapp。 当我运行SpringBoot应用程序时,我能够从主webapp(SpringBoot应用程序)访问服务和html,但是我不能从DependencyWar(404)访问html文件。但是这些html文件在SpringBootWebApp战争中得到了很好的打