Java 8中的新Stream API非常好用,特别是对于并行处理功能.但是,我没有看到如何在Collections parallelStream方法之外应用并行处理.
例如,如果我从文件创建一个Stream,我使用以下内容:
Stream<String> lines = Files.lines(Paths.get("test.csv"));
Run Code Online (Sandbox Code Playgroud)
但是,没有对应的parallelStream方法,就像在Collections中一样.看起来可能有一个线程抓住下一行,而可能有几个线程解析和处理这些行.
这可以通过StreamSupport.stream()来完成吗?
有一个更简单的答案:通过调用.parallel()可以将任何流转为并行:
Stream<String> lines = Files.lines(Paths.get("test.csv"))
.parallel();
Run Code Online (Sandbox Code Playgroud)
.parallelStream()Collection上的方法只是一种方便.
请注意,除非您每行执行大量处理,否则文件中IO的顺序性可能会占主导地位,您可能无法获得所希望的并行性.
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |