1.1 目标


了解串行的Stream流
掌握获取并行Stream流的两种方式


1.2 串行的Stream流


目前我们使用的Stream流是串行的,就是在一个线程上执行。
image.png
效果:
image.png

1.3 并行的Stream流


parallelStream其实就是一个并行执行的流。它通过默认的ForkJoinPool,可能提高多线程任务的速度。


1.4 获取并行Stream流的两种方式


1. 直接获取并行的流
2. 将串行流转成并行流

image.png

  1. @Test
  2. public void testgetParallelStream() {
  3. // 掌握获取并行Stream流的两种方式
  4. // 方式一:直接获取并行的Stream流
  5. List<String> list = new ArrayList<>();
  6. Stream<String> stream = list.parallelStream();
  7. // 方式二:将串行流转成并行流
  8. Stream<String> parallel = list.stream().parallel();
  9. }

并行操作代码:
image.png

@Test
public void testParallel() {
    Stream.of(4, 5, 3, 9, 1, 2, 6)
        .parallel() // 转成并行流
        .filter(s -> {
            System.out.println(Thread.currentThread() + "::" + s);
            return s > 3;
        })
        .count();
}

效果:


image.png

1.5 小结


获取并行流有两种方式:

直接获取并行流: parallelStream()
将串行流转成并行流: parallel()