根据这个,下面的代码片段应该是异步的。
因此,输出应为:TP1、TP2、TP3、http ://openjdk.java.net/ 。
但是,当我运行它时,我得到:TP1、TP2、http ://openjdk.java.net/、TP3。
似乎“sendAsync”正在阻塞主线程。这不是我对 Async 方法的期望。
难道我做错了什么?
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
System.out.println("TP1");
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://openjdk.java.net/"))
.build();
System.out.println("TP2");
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::uri)
.thenAccept(System.out::println)
.join();
System.out.println("TP3");
}