En java je veux exécuter plusieurs threads et obtenir la réponse de retour de tous. Le problème que j'ai est si un des threads jette une exception quand je fais le String temp = r.get() il tombe dans le catch et ne me donne pas la réponse des threads restants.Lorsque vous utilisez le ExecutorService.invokeAll est-il un moyen d'obtenir toutes les réponses, même si une exception est survenue
Est-il possible de traiter toutes les réponses indépendamment du fait que le fil individuel a lancé une exception?
Mon code de test est
ExecutorService es = Executors.newFixedThreadPool(2);
List<CallTest> callList = new ArrayList<>();
callList.add(new CallTest(1));
callList.add(new CallTest(2));
callList.add(new CallTest(3));
callList.add(new CallTest(4));
try {
List<Future<String>> returns = es.invokeAll(callList);
for (Future<String> r : returns) {
String temp = r.get();
System.out.println("returned " + temp);
}
} catch (InterruptedException e) {
System.out.println("Interrupted Exception catch");
e.printStackTrace();
} catch (ExecutionException e) {
System.out.println("Execution Exception catch");
e.printStackTrace();
}
Mettre le try-catch autour de l'individu 'r.get()' au lieu de la boucle entière? – RealSkeptic