ParallelStream for Files

Aar*_*ron 0 java java-8

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()来完成吗?

Bri*_*etz 9

有一个更简单的答案:通过调用.parallel()可以将任何流转为并行:

Stream<String> lines = Files.lines(Paths.get("test.csv"))
                            .parallel();
Run Code Online (Sandbox Code Playgroud)

.parallelStream()Collection上的方法只是一种方便.

请注意,除非您每行执行大量处理,否则文件中IO的顺序性可能会占主导地位,您可能无法获得所希望的并行性.