java - Spring Boot ASync + AutoWired Executor 与手动 Executor + Future/Callable?

标签 java spring asynchronous spring-boot spring-async

创建和管理您自己的 ExecutorService 与使用 Spring Boot 的 @Async 方法和 @Bean 方法创建 Executor< 相比有缺点吗?

对我来说,手动操作似乎简单得多。我只是创建了我的 ExecutorService 和一个使用它来安排任务/Callable 的方法。

我需要 Spring Boot:

  • @Async装饰方法
  • @Configuration@EnableAsync装饰我的配置类>
  • 添加一个@Bean来创建一个Executor

手动操作是否存在潜在问题? Spring 会终止线程吗?使用 Spring 异步模式还有其他一些好处吗?

最佳答案

看起来你的大部分挂断都是适用于许多 Spring IoC 配置的项目。 @Async 是 Spring Framework 而非 Spring Boot 的一部分。

您可以像您提到的那样自己处理执行程序,但我想问的是,如果您已经开始使用 Spring Framework 和 Spring Boot,为什么还要麻烦。

Spring 确实在后台处理一些项目本身,例如关闭 ApplicationContext 时执行器的 shutdown

如果您选择使用它,还有一些很好的异常处理可以与 Spring Framework 的调度方面一起使用。

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-annotation-support-qualification

必须创建 @Bean@Configuration 是 Spring 的一个现实,在我看来,这并不是一个真正的缺点,它只是一个现实框架。

最后,@Async 抽象了实现Runnable 的需要,或者 @Callable 有效地允许更快地实现异步功能。

关于java - Spring Boot ASync + AutoWired Executor 与手动 Executor + Future/Callable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45513756/

相关文章:

javascript - 异步函数不能与 Await 一起使用

java - 如何在调整浏览器大小时调整 java applet 的大小?

java - 代码如何确定使用 WebSphereRequestUpgradeStrategy 与 TomcatRequestUpgradeStrategy?

java - Spring 单例传递给其他对象

mysql - 使用 Spring 的 "jdbc:initialize-database",如何使用存储过程运行脚本?

java - 来自 Windows Server Spring 集成的 SFTP

python - Python线程,排队,异步……这是什么意思?

c# - Asp.net 长时间运行的后台任务。最佳实践?

java - 更新时 hibernate 缓存

java - child.waitFor() 执行后返回什么?