java - Spring ThreadPoolTask​​Executor 关闭异步任务

标签 java spring asynchronous concurrency

我正在使用spring task execution framework执行异步任务。 为此,我使用 @Async 注释来注释我的方法,并将以下内容添加到基于 XML 的应用程序上下文中:

<!-- async support -->
<task:annotation-driven executor="myAsyncExecutor" />
<task:executor id="myAsyncExecutor" pool-size="5-10" queue-capacity="100" />

想知道在这种情况下 - 这个执行器的 shutdown 方法是如何被调用的?我想确保我的应用程序不会永远等待这个线程池。

我可以(而不是使用任务命名空间)将我的执行程序定义为一个 bean,然后将其销毁方法设置为“关闭”,但想知道任务命名空间定义样式。

有什么想法吗?

最佳答案

Spring内部使用org.springframework.scheduling.concurrent.ThreadPoolTask​​Executor作为task:executor的命名空间。

如果查看相关source code (这是继承的)执行器上的关闭在 bean destroy 时调用;所以不用担心。

关于java - Spring ThreadPoolTask​​Executor 关闭异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26419059/

相关文章:

java - 如何处理 spring jpa @transactional 和 catch block 中的新插入

java - Spring-boot内部jar文件加载顺序? (嵌入式tomcat)

java - 为什么我们要在 Spring Boot 中更改 servlet 上下文路径?

node.js - nodejs错误: Callback was already called

javascript - 为什么 XMLHttpRequest 实例只能发送一个请求?

java - REST Jersey 导致 HTTP 状态 500 - 内部服务器错误

java - 非线程安全数据的 AtomicBoolean 保护( volatile 搭载)

java - Spring Boot + Apache 反向代理 : This combination of host and port requires TLS

java - 如何使用Spring5 WebClient进行异步调用

python - 如何阻止和等待异步、基于回调的 Python 函数调用