关于 Java8 中的 Stream,请参见 Java8 Stream 使用
parallelStream
其实就是一个并行执行的流。它通过默认的 ForkJoinPool
,处理的过程会分而治之,也就是将一个大任务切分成多个小任务,可能提高你的多线程任务的速度。
例如:如下代码不一定会按照1到5的顺序输出,可能是任意的顺序。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.parallelStream()
.forEach(System.out::println);
stream or parallelStream
- 是否需要并行?
- 任务之间是否是独立的?是否会引起任何竞态条件?
- 结果是否取决于任务的调用顺序?