Java未来:获取每个请求的时间

Java未来:获取每个请求的时间,java,time,future,latency,Java,Time,Future,Latency,我有一段代码,需要并行发出15个请求,然后等待所有请求完成,然后再继续 每个请求大约需要500-2500毫秒。Java中是否有方法获得每个未来完成请求所需的时间?我不知道未来api本身有任何内置方法。但是,如果使用,则可以在创建未来时启动计时器,并在onSuccess或onFailure回调中停止计时器。具体来说,这可能看起来像: public void timeRequests(MyRequests[] requestsToMake) { ListeningExecutorService

我有一段代码,需要并行发出15个请求,然后等待所有请求完成,然后再继续


每个请求大约需要500-2500毫秒。Java中是否有方法获得每个未来完成请求所需的时间?

我不知道未来api本身有任何内置方法。但是,如果使用,则可以在创建未来时启动计时器,并在onSuccess或onFailure回调中停止计时器。具体来说,这可能看起来像:

public void timeRequests(MyRequests[] requestsToMake) {
  ListeningExecutorService service =  MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(requestsToMake.length));
long startTimeNanos = System.nanoTime();
long[] endTimes= new long[requestsToMake.length]
for(int i =0; i < requestsToMake.length; i++){
    MyRequest req = requestsToMake[i];
    ListenableFuture<MyData> rFuture = service.submit(new  Callable<MyRequest>() {
  public MyData call() {
 return req.makeRequest();
 }
});
Futures.addCallback(rFuture, new FutureCallback<MyData>() {

 public void onSuccess(MyData data) {
    endTimes[i]=System.nanoTime();
   //whatever else you do
}
public void onFailure(Throwable thrown) {
    endTimes[i]=System.nanoTime();
   //whatever else you do
}
});
}
public void timeRequests(MyRequests[]requestsToMake){
ListingExecutorService=MoreExecutors.ListingDecorator(Executors.newFixedThreadPool(RequestToMake.length));
long startTimeNanos=System.nanoTime();
long[]endTimes=new long[requestTomake.length]
for(int i=0;i
如果要等待所有线程完成,然后继续,可以使用。