首页 > 试题广场 >

以下代码使用Java的HttpClient(Java 11+

[单选题]
以下代码使用Java的HttpClient(Java 11+),关于其异步请求的实现,哪项是正确的?
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.example.com/data"))
.build();
CompletableFuture<HttpResponse<String>> future =
client.sendAsync(request, HttpResponse.BodyHandlers.ofString());
  • sendAsync默认使用与主线程相同的线程发送请求
  • sendAsync返回的CompletableFuture在请求完成前调用join()不会阻塞
  • HttpClient默认使用实现提供的默认executor来处理异步请求
  • sendAsync不支持HTTP/2协议
B选项:sendAsync调用后会直接返回空数据future ,由后台开启的线程异步去执行这个请求,
    主线程会继续往下执行。但是如果future调用join(),那么主线程会一直阻塞等待后台
    线程处理完这个http请求。所以是会阻塞。

发表于 2026-03-25 08:22:33 回复(0)