如何使用Java11标准HTTPClient测量异步发送的HTTPRequest的运行时间?

如何使用Java11标准HTTPClient测量异步发送的HTTPRequest的运行时间?,java,asynchronous,time,httprequest,java-http-client,Java,Asynchronous,Time,Httprequest,Java Http Client,在一种方法中,我创建并发送一些HTTPRequests async,并将CF添加到列表中: //HTTPClient是Java11标准,包java.net.http; CompletableFuture httpResponseCF=this.httpClient.sendAsync(httpRequest,BodyHandlers.OfsString()); 列表。添加(httpResponseCF); 稍后,在另一种方法中,我每隔1秒定期检查我的一些异步发送的HttpRequest是否已经

在一种方法中,我创建并发送一些HTTPRequests async,并将CF添加到列表中:

//HTTPClient是Java11标准,包java.net.http;
CompletableFuture httpResponseCF=this.httpClient.sendAsync(httpRequest,BodyHandlers.OfsString());
列表。添加(httpResponseCF);
稍后,在另一种方法中,我每隔1秒定期检查我的一些异步发送的HttpRequest是否已经收到:

for(可完成的未来httpResponseCF:list){
if(httpResponseCF.isDone()){
//打印输出:发送HTTPRequest和接收HTTPResponse之间的时间为25ms
}
}

问题是,如何测量准确的已用请求时间?

类似于以下内容的内容应该可以做到这一点:

long start = System.nanoTime();
CompletableFuture<HttpResponse<String>> httpResponseCF = 
    this.httpClient.sendAsync(httpRequest, BodyHandlers.ofString()).
    whenComplete((r,t) -> System.out.println("elapsed ns: "
                           + (System.nanoTime() - start)));
long start=System.nanoTime();
可完成的未来httpResponseCF=
this.httpClient.sendsync(httpRequest,BodyHandlers.ofString())。
当完成((r,t)->System.out.println(“经过的ns:
+(System.nanoTime()-start));
免责声明:我还没有实际编译上述内容。。。 这也不是确切的时间,而是你能得到的最佳近似值。正如所有事情一样,准确的时间是不可能测量的