Oczekiwanie na oddzwonienie dla wielu kontraktów futures

Niedawno zagłębiłem się w trochę pracy przy użyciu API. Interfejs API wykorzystuje bibliotekę Unirest http, aby uprościć pracę odbierania z sieci. Naturalnie, ponieważ dane są wywoływane z serwera API, starałem się być wydajny, używając asynchronicznych wywołań do API. Mój pomysł ma następującą strukturę:

Twórz tablicę danych, zwracając wyniki kontraktów terminowychWyświetl dane + dodatkowe informacje zebrane z danych

Dlatego muszę odzyskać wszystkie dane, zanim będę mógł rozpocząć drugi krok. Mój kod jest następujący:

Future < HttpResponse < JsonNode >  > future1 = Unirest.get("https://example.com/api").asJsonAsync(new Callback < JsonNode > () {
    public void failed(UnirestException e) {
        System.out.println("The request has failed");
    }
    public void completed(HttpResponse < JsonNode > response) {
        System.out.println(response.getBody().toString());
        responses.put(response);
    }
    public void cancelled() {
        System.out.println("The request has been cancelled");
    }
});
Future < HttpResponse < JsonNode >  > future2 = Unirest.get("https://example.com/api").asJsonAsync(new Callback < JsonNode > () {
    public void failed(UnirestException e) {
        System.out.println("The request has failed");
    }
    public void completed(HttpResponse < JsonNode > response) {
        System.out.println(response.getBody().toString());
        responses.put(response);
    }
    public void cancelled() {
        System.out.println("The request has been cancelled");
    }
});
doStuff(responses);

Jak bym to zrobił, aby doStuff został wywołany dopiero po zakończeniu obu przyszłości?

questionAnswers(1)

yourAnswerToTheQuestion