Java 8流多线程

Java 8流多线程,java,multithreading,java-8,java-stream,Java,Multithreading,Java 8,Java Stream,对于这段代码,它是否在多个线程上运行? 如果没有,我怎么做?我希望每个m.dosomething()在不同的线程上运行,以加快这项工作。使用来完成这项工作。请注意,文档中说它“可能是并行的”,因此有可能返回非并行流。我想这些案例是罕见的,但请注意,这实际上是一种限制 mylist.stream() .filter(m -> m.isokay() != null) .forEach(m -> m.dosomething())); 我想您正在寻找.Fyi,.pa

对于这段代码,它是否在多个线程上运行? 如果没有,我怎么做?我希望每个
m.dosomething()
在不同的线程上运行,以加快这项工作。

使用来完成这项工作。请注意,文档中说它“可能是并行的”,因此有可能返回非并行流。我想这些案例是罕见的,但请注意,这实际上是一种限制

mylist.stream()
      .filter(m -> m.isokay() != null)
      .forEach(m -> m.dosomething()));

我想您正在寻找.Fyi,
.parallelStream()
将利用
ForkJoinPool.commonPool()
。请注意,在许多情况下,多线程可能会降低代码的速度。例如,请参见streams的作者之一所写。Oracle文档指定“当一个流并行执行时,Java运行时将该流划分为多个子流”。在本例中,“可能并行”可能意味着您获得了一个顺序流,如果创建一个并行流没有意义(例如,如果流的大小只有一个项目,或者线程当前短缺)
mylist.parallelStream()
      .filter(m -> m.isokay() != null)
      .forEach(m -> m.dosomething()));