Spring Retry的@Retryable、@Recover注解方法是否会创建新线程?
Spring Retry 重试与恢复的线程执行规则
- 默认情况下,
@Retryable触发的所有重试尝试,以及@Recover标注的恢复逻辑,全部在触发异常的原线程中执行,不会新建线程。 - 异步重试的特殊情况:如果需要异步执行重试,可以通过两种方式配置:
- 给
@Retryable指定自定义的异步重试拦截器(通过interceptor属性) - 结合Spring的
@Async注解标记重试方法,此时重试任务会提交到线程池,在新线程中执行。但要注意,这种情况下恢复方法的线程依赖具体配置,需根据场景适配。
- 给
- 补充说明:同步模式下,整个重试流程(包括多次重试和最终恢复)的线程上下文完全一致,不会切换线程;异步模式则会脱离原线程,使用线程池中的线程处理重试逻辑。
内容的提问来源于stack exchange,提问作者Aman Kumar Sinha
相关产品推荐
相关产品推荐

