Java Spring: как обрабатывается возвращаемое значение метода @Async? - PullRequest
0 голосов
/ 05 июля 2019

скажи, у меня есть метод

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

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

Я понимаю, что метод немедленно вернется и освободит поток контейнера.

Но как обрабатывается возвращаемое значение (через некоторое время)?

Есть ли слушатель?

И разве это не блокирует один из потоков контейнера?

Разве что-то вроде future.get () не выполняется внутренне?

1 Ответ

0 голосов
/ 05 июля 2019

Существует метод doSomething.isDone(), чтобы проверить, готово ли будущее.Вы можете реализовать оператор if для проверки, если isDone возвращает true (и вызвать метод .get() для получения будущего).Если он вернет false, это будет означать, что вам нужно ждать будущего.

РЕДАКТИРОВАТЬ: после того, как сообщение было отредактировано, мой ответ больше не связан, но я бы сделал это так, как я описал.

...