Maison  >  Article  >  Java  >  Comment utiliser les opérations de flux parallèles de CompletableFuture en Java

Comment utiliser les opérations de flux parallèles de CompletableFuture en Java

WBOY
WBOYoriginal
2023-06-26 14:46:241272parcourir

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 Listc0f559cc8d56b43654fcbe4aa9df7b4a. 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 que la tâche soit exécutée, et le résultat renvoyé est de type Listc0f559cc8d56b43654fcbe4aa9df7b4a.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn