Java Spring引导异步方法阻塞
我正在尝试从spring控制器异步保存文档。因为它经常会失败,所以我想在服务上异步运行以下方法,以便重复调用。UI客户端不需要等待它完成Java Spring引导异步方法阻塞,java,spring,spring-boot,asynchronous,Java,Spring,Spring Boot,Asynchronous,我正在尝试从spring控制器异步保存文档。因为它经常会失败,所以我想在服务上异步运行以下方法,以便重复调用。UI客户端不需要等待它完成 @Service public class AsyncService { @Autowired DocumentClient documentClient; @Async public void save(Document document) { int tryCount = 0; whi
@Service
public class AsyncService {
@Autowired
DocumentClient documentClient;
@Async
public void save(Document document) {
int tryCount = 0;
while (tryCount < RETRY_LIMIT) {
try {
tryCount++;
documentClient.save(document);
return;
} catch (Exception e) {
if (tryCount < RETRY_LIMIT) {
log.info("Retrying save document");
}
}
}
}
}
@服务
公共类异步服务{
@自动连线
文档客户端文档客户端;
@异步的
公共作废保存(文档){
int tryCount=0;
while(tryCount
当我在documentClient.save(document)行设置断点时代码>它正在阻塞,控制器正在等待。但是,当我在“return”设置断点时,调用是异步执行的,控制器返回,而我仍然在断点处暂停。你知道为什么会这样吗?我认为整个方法save(Document)
是非阻塞的
我正在使用Springboot 1.5和Intellij作为调试器/运行时。默认情况下,Intellij将挂起所有线程。它可以在断点上配置为仅挂起当前线程,从而解决问题。谢谢@M.Deinum的回答。断点将导致所有线程在该时刻暂停。所以当它启动时,一切都会暂停。因此,在保存时设置它时,它也会暂停主执行线程。