【问题标题】:Spring Framework's ListenableFuture#addCallback completion callbacks executed by which thread?Spring Framework 的 ListenableFuture#addCallback 完成回调由哪个线程执行?
【发布时间】:2020-11-07 06:24:20
【问题描述】:

我打算使用 Spring Framework 的 ListenableFuture 实现,因为代码将包含在 Spring Boot 应用程序中。正如他们的文档中所指出的,它的灵感来自 guava com.google.common.util.concurrent.ListenableFuture

然而,在查看 addCallback 完成回调/侦听器的 Spring 实现文档时,与番石榴 ListenableFuture 不同,对于两个重载的回调/侦听器,没有提及哪个线程将执行 SuccessCallback/FailureCallback /ListenableFutureCallback

这是否意味着它们将默认由完成未来的线程执行?

另外,我担心如果文档中没有明确提及此合同,人们可能会犹豫使用它。那么这是否在我可能遗漏的文档中某处有所说明?

谢谢

【问题讨论】:

  • Spring 团队的各位有什么意见吗?

标签: java spring multithreading spring-boot guava


【解决方案1】:

对于可能有相同问题的其他人,我想添加观察到的行为(没有官方记录的 AFAIK,如果没有,人们可以纠正并指出我)。

我怀疑观察到的行为是它们正在由完成未来的线程执行。

如果 spring 实现提供了与 guava 相同的支持,那就太好了,但就目前而言,上述行为就是我们所拥有的。这仍然比MoreExecutors.directExecutor() 的番石榴默认值更好,它在调用执行的线程中完成..

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 2015-04-06
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多