ich unten Methode in meiner Anwendung haben und es sieht gut funktioniert .. aber ich bin nicht sicher, wie es ist ...der Zukunft Klärung in Java
ArrayList arr = new ArrayList();
Collection<Future<?>> futures = new LinkedList<Future<?>>();
RestCallThread thread = null;
HttpHeaders header = getAuthHeader(authorization);
for (String ids : IDS) {
thread = new RestCallThread(ids, header);
futures.add(executor.submit(thread));
}
for (Future<?> future : futures) {
try {
arr.add(future.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
return arr;
In den Code RestAPI Anrufe an die ThreadPoolExecutor hinzugefügt und warten auf das Ergebnis ..
Meine Frage Da der Ansatz auf Thread basiert, wie der return-Anweisung nicht, bis alle API-Threads abgeschlossen wird ausgeführt ...
Jede Chance der return-Anweisung erhalten werden leere Liste zurück ?
Nein, 'future.get()' blockiert, bis die Aufgabe ein Ergebnis liefert. Die einzige Möglichkeit einer leeren Liste besteht darin, dass jede Task eine Ausnahme auslöst –