Я хочу написать приложение Spring Boot с учетом неблокирующих запросов. В общем, мои методы контроллера - это однострочные методы, которые просто вызывают метод службы, а затем возвращают, например:
@RestController
class myController {
...
@GetMapping("/")
public String getString(){
return service.getString().get();
}
}
Допустим, у меня есть реализация Service, которая выглядит примерно так:
@Service
class myService{
...
@Async
public CompleteableFuture<String> getString(){
return "Hello World!";
}
}
(Предположим, что в другом месте я включил @EnableAsync
, и предположим, что код контроллера изменен для обработки CompleteableFutures путем извлечения значения String и его возврата)
Когда мой контроллер вызывает мою службу, Java все еще резервирует рабочий поток для ожидания возвращаемого значения из Службы или рабочий поток возвращается в пул потоков, пока служба не завершит свою работу?
Спасибо.