J'ai ci-dessous méthode dans ma demande et il est semble fonctionne très bien .. mais je ne suis pas sûr de savoir comment il est ...avenir des éclaircissements liés à 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;
Dans les appels RestAPI de code sont ajoutés à la ThreadPoolExecutor et en attendant le résultat ..
Ma question est Puisque l'approche est basée sur un fil que l'instruction retour n'est pas exécutée jusqu'à ce que tous les fils de l'API se terminé ...
Toute chance de déclaration de retour sera de retour liste vide ?
Non, 'future.get()' se bloque jusqu'à ce que la tâche produise un résultat. Seule la chance d'une liste vide est si chaque tâche génère une exception –