Java Spring:如何处理@Async方法的返回值?

时间:2019-07-05 12:25:37

标签: java spring-boot spring-mvc completable-future

说我有一个方法

@RestController
@RequestMapping(value = "/")
public class AppController {

    @Async
    @PostMapping(value="/")
    public CompletableFuture<> doSomething(@RequestBody ..., HTTPServletResponse response){
         //something; 
     return completableResult;
    }
}

我知道该方法将立即返回并释放容器线程。

但是(一段时间后)如何处理返回的值?

有听众吗?

那不会阻塞容器线程之一吗?

是否没有在内部执行诸如future.get()之类的东西?

1 个答案:

答案 0 :(得分:0)

有一种方法doSomething.isDone()来检查将来是否准备就绪。您可以实现if语句来检查isDone是否返回true(并调用.get()方法来检索将来的内容)。如果返回false,则意味着您需要等待未来。

编辑: 编辑帖子后,我的答案不再那么联系了,但我会按照我所描述的类似方式进行操作。