同じストリームパイプラインで使用される端末操作が出会いの順序を尊重していない場合、中間業務の名誉は順番に遭遇していますか?

Piyushクマール:

私は、リストの遭遇順序を尊重し、リスト上の(ソースなど)、マップする(栄誉に関わらず、その順次または並列ストリームかどうかの順に遭遇しない)のforEach()端末操作とストリームパイプラインの地図操作を使用していた場合シーケンシャルまたはパラレルストリームの場合は?

List<Integer> = Arrays.asList(1,2,3,4,5)
someList.stream().map(i -> i*2).forEach(System.out::println) // this is sequential stream
someList.parallelStream().map(i -> i*2).forEach(System.out::println) // this is parallel stream

yesの場合、この記事でhttps://stackoverflow.com/a/47337690/5527839、それは言及されているマップの操作が並行して実行されます。順序が維持されている場合は、並列ストリームを使用した場合、どのようにそれは良いパフォーマンスを行います。並列ストリームを使用しての何点?

デッドプール :

順序が維持されている場合は、並列ストリームを使用した場合、どのようにそれは良いパフォーマンスを行います。並列ストリームを使用しての何点?(はいまだあなたは、パフォーマンスを向上しますが、レベルは期待できません)

あなたは、使用している場合でもforEachOrdered()一方でparallelStream、中間操作はmap同時実行スレッドで実行されますが、端末操作になりますorEachOrdered彼らは順番に処理することができます。コードの下に試してみてください、あなたはで並列処理が表示されますmap操作

List<Integer> someList = Arrays.asList(1,2,3,4,5);
            someList.stream().map(i -> {
                System.out.println(Thread.currentThread().getName()+" Normal Stream : "+i);
                return i*2;
            }).forEach(System.out::println); // this is sequential stream

            System.out.println("this is parallel stream");

            someList.parallelStream().map(i -> {
                System.out.println(Thread.currentThread().getName()+" Parallel Stream : "+i);
                return i*2;
            }).forEachOrdered(System.out::println); // this is parallel stream

名誉の出会いのためにマップのだろうか?中間事業に関連するどのような方法を注文していますか?

もしそうであればparallelstream、それは通常のストリームは、その後順番に遭遇するマップであればマップは、任意の順序は発生しません、それは完全に中間操作にないストリームに依存します

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=239775&siteId=1