Kay*_*ayV 5 java parallel-processing java-8 java-stream
我正在研究java 8并行流并且想要在并行流中打印元素是一些顺序(比如插入顺序,逆序或顺序顺序).
为此,我尝试了以下代码:
System.out.println("With forEachOrdered:");
listOfIntegers
.parallelStream()
.forEachOrdered(e -> System.out.print(e + " "));
System.out.println("");
System.out.println("With Sequential:");
listOfIntegers.parallelStream()
.sequential()
.forEach(e -> System.out.print(e + " "));
Run Code Online (Sandbox Code Playgroud)
对于这两个,我得到相同的输出如下:
With forEachOrdered:
1 2 3 4 5 6 7 8
With Sequential:
1 2 3 4 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
从api文档中,我可以看到:
forEachOrdered - >这是一个终端操作.
和
顺序 - >这是一个中间操作.
所以我的问题是哪一个更好用?在哪种情况下,一个应该优先于其他情况?
listOfIntegers.parallelStream().sequential().forEach()
创建一个并行Stream
,然后将其转换为sequence Stream
,因此您最好使用它listOfIntegers.stream().forEach()
,并首先获取一个sequence Stream
。
listOfIntegers.parallelStream().forEachOrdered(e -> System.out.print(e + " "))
在parallel上执行操作Stream
,但保证元素将按的遇到顺序被消耗Stream
(如果Stream
具有已定义的遇到顺序)。但是,它可以在多个线程上执行。
我看不出有使用过的原因listOfIntegers.parallelStream().sequential()
。如果要顺序操作Stream
,为什么Stream
要先创建并行操作?
归档时间: |
|
查看次数: |
704 次 |
最近记录: |