Comment utiliser les flux parallèles en java

Streams en Java viennent dans deux saveurs de base: séquentiel et parallèle. Les éléments dans un flux séquentiel sont produites par le courant méthode et créer des flux qui sont traités un élément après l'autre. Flux parallèles, en revanche, peuvent tirer pleinement parti des processeurs multicœurs en brisant ses éléments en deux ou plusieurs petits cours d'eau, d'effectuer des opérations sur eux, puis à recombiner les courants séparés pour créer le flux de résultat final.

Chacun des flux intermédiaires peuvent être traitées par un thread séparé, qui peut améliorer les performances des grands cours d'eau.

Par défaut, les flux sont séquentielles. Mais la création d'un flux parallèle est facile: Il suffit d'utiliser la parallelStream au lieu de la méthode courant Procédé selon au début de la canalisation.

Par exemple, pour imprimer tous les sorts de HP à l'aide d'un flux parallèle, utilisez ce code:




. spells.parallelStream () forEach (s -> System.out.println (s)) -

Notez que lorsque vous utilisez un flux parallèle, vous ne pouvez pas prédire l'ordre dans lequel chaque élément du flux est traitée. En effet, lorsque le flux est divisé et course sur deux ou plusieurs threads, l'ordre dans lequel le processeur exécute les fils ne sont pas prévisibles.

Pour démontrer ce point, considérez cet exemple simple:

System.out.println ("Le premier flux de parallèle:") -spells.parallelStream () forEach (s -> System.out.println (s)) - System.out.println ("de nSeconde flux parallèle:"). - . spells.parallelStream () forEach (s -> System.out.println (s)) -

Lorsque vous exécutez ce code, les résultats seront ressembler à quelque chose comme ceci:

Le premier flux de parallèle: FideliusFinite IncatatumEngorgioLocomotor MortisApareciumAvisSecond de flux parallèles: FideliusEngorgioFinite IncatatumLocomotor MortisAvisAparecium

Notez que bien que les mêmes sorts sont imprimés pour chacun des flux, ils sont imprimés dans un ordre différent.


» » » » Comment utiliser les flux parallèles en java