J'ai un List<List<String>>
dans java, je veux Liste de processus dans la liste parente Asynchronously avec le groupe de threads fixe Exemple 3. J'essaie d'utiliser CompletableFuture et Stream dans java 8. Je ne comprends pas comment fusionner ces deux et comment procéder . Code PFB j'ai essayé jusqu'ici. Dans le processeur je l'imprime juste, mais je ferai des opérations de DB.Comment traiter la liste de liste avec CompletableFuture dans java?
Donc ici j'essaye de diffuser List<List<String>>
et de créer le nombre de thread basé sur la taille de liste mais hoe passer la liste en streaming en tant qu'argument au processeur avec CompletableFuture.
public class CompletableFutureWithList {
public static void main(String args[]) {
List<List<String>> aList = new ArrayList<>();
aList.add(new ArrayList<>(Arrays.asList("xyz", "abc")));
aList.add(new ArrayList<>(Arrays.asList("qwe", "poi")));
System.out.println("helo...");
ExecutorService executor = Executors.newFixedThreadPool(aList.size());
//aList.stream().flatMap(List::stream).
Processor aProcessor = new Processor();
List<String> tempList = new ArrayList<>();
CompletableFuture aComFuture = supplyAsync(() -> aProcessor.processList(tempList), executor);
try {
aComFuture.get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
public class Processor {
public boolean processList(List<String> tempList) {
for (String string : tempList) {
System.out.println("Output: " + string);
}
return true;
}
}
Pourquoi utilisez-vous un CompletableFuture et ne pas appeler simplement 'avenir f = excecutor.submit (() -> processlist (liste))' pour chaque liste? –
assylias
Vous pouvez écrire le programme simple qui a un thread (simple à déboguer) et exécute ce programme utiliser des processus externes Apache Commons Exec. – Grzesiek