CompletableFuture en Java est une classe puissante qui peut implémenter une programmation asynchrone et certaines opérations de flux avancées. L'une des applications importantes est les opérations de flux parallèles.
Le streaming parallèle consiste à diviser une collection en plusieurs parties, à les traiter dans différents threads et enfin à fusionner les résultats.
Avant Java 8, Stream en Java ne pouvait être traité qu'en série, et Java 8 ajoutait des opérations de flux parallèles pour améliorer les performances simultanées du programme.
Regardons d'abord un exemple :
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); list.parallelStream().forEach(System.out::println);
Dans l'exemple ci-dessus, nous utilisons la méthode parallelStream pour obtenir un flux parallèle. La méthode parallelStream renvoie un flux parallèle pour une collection, le flux parallèle peut diviser la collection en plusieurs parties, chaque partie est traitée dans un thread différent, puis les résultats sont fusionnés.
En même temps, nous pouvons également utiliser CompletableFuture pour effectuer des opérations de flux parallèles. Voici un exemple :
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); CompletableFuture<Void> future = CompletableFuture.runAsync(() -> { list.parallelStream().forEach(System.out::println); }); future.join();
Dans l'exemple ci-dessus, nous utilisons la méthode runAsync de CompletableFuture pour créer une tâche asynchrone. La méthode parallelStream est utilisée dans la tâche pour obtenir le flux parallèle à traiter, et enfin, la méthode join est utilisée pour attendre. La tâche est terminée.
En plus d'utiliser la méthode runAsync, nous pouvons également utiliser la méthode supplyAsync pour créer une tâche asynchrone et renvoyer un résultat. L'exemple est le suivant :
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); CompletableFuture<List<Integer>> future = CompletableFuture.supplyAsync(() -> { return list.parallelStream().map(i -> i * 2).collect(Collectors.toList()); }); List<Integer> result = future.join(); System.out.println(result);
Dans le. Dans l'exemple ci-dessus, nous utilisons la méthode supplyAsync de CompletableFuture crée une tâche asynchrone et renvoie un résultat de type List
Pour résumer, CompletableFuture en Java est une classe très puissante qui peut non seulement implémenter une programmation asynchrone, mais également effectuer des opérations de flux parallèles. Lors de l'utilisation de CompletableFuture, nous devons prêter attention aux problèmes de sécurité des threads et utiliser raisonnablement les opérations de flux parallèles pour améliorer les performances de concurrence des programmes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!