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 次 |
| 最近记录: |