Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导异步方法阻塞_Java_Spring_Spring Boot_Asynchronous - Fatal编程技术网

Java Spring引导异步方法阻塞

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

我正在尝试从spring控制器异步保存文档。因为它经常会失败,所以我想在服务上异步运行以下方法,以便重复调用。UI客户端不需要等待它完成

@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的回答。

断点将导致所有线程在该时刻暂停。所以当它启动时,一切都会暂停。因此,在保存时设置它时,它也会暂停主执行线程。