Java 8 Stream多线程

Buf*_*lls 12 java multithreading java-8 java-stream

mylist.stream()
      .filter(m -> m.isokay() != null)
      .forEach(m -> m.dosomething()));
Run Code Online (Sandbox Code Playgroud)

对于此代码,它是否在多个线程上运行?如果没有,我该怎么办?我希望每个人m.dosomething()都能在单独的线程上运行以加速这项工作.

Mak*_*oto 16

使用parallelStream()做到这一点.请注意,文档说它"可能是并行的",因此您可能会返回非并行流.我想这些案例很少见,但要注意它实际上是一个限制.

mylist.parallelStream()
      .filter(m -> m.isokay() != null)
      .forEach(m -> m.dosomething()));
Run Code Online (Sandbox Code Playgroud)