Java 8中新的Stream API非常好,特别是对于并行处理功能。但是,我看不到如何在Collections parallelStream方法之外应用并行处理。
例如,如果我要从文件创建流,则使用以下命令:
Stream<String> lines = Files.lines(Paths.get("test.csv"));
但是,没有类似Collections中的并行parallelStream方法。似乎可能有一个线程在抓取下一行,而可能有多个线程在解析和处理这些行。
可以用StreamSupport.stream()完成吗?
最佳答案
有一个简单得多的答案:可以通过调用.parallel()将任何流变为并行:
Stream<String> lines = Files.lines(Paths.get("test.csv"))
.parallel();
Collection上的
.parallelStream()
方法只是一种方便。请注意,除非您每行要进行大量处理,否则文件中IO的顺序性质可能会占主导地位,并且您可能无法获得希望的并行度。