Спасибо подсказкам @ Thilo, я получил то поведение, которое искал. То, что я имел в виду раньше, было чем-то вроде javascript, где вы цепляете свои свободные разговоры и продвигаетесь вперед. В Java вы инициируете вызовы, а затем, когда вы готовы заблокировать, вы звоните get()
или join()
. Итак, стало так:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://postman-echo.com/delay/3"))
.header("cache-control", "no-cache")
.header("postman-token", "6bac0475-7cd1-f51a-945f-2eb772483c2c")
.build();
CompletableFuture cf = client.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println);
System.out.println("passed");
HttpResponse<String> result = (HttpResponse<String>)cf.join();