Java 8 流多线程

2022-09-03 13:41:03
mylist.stream()
      .filter(m -> m.isokay() != null)
      .forEach(m -> m.dosomething()));

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


答案 1

使用 parallelStream() 来实现此目的。请注意,文档说它“可能是并行的”,因此您可能会返回非并行流。我想这些情况很少见,但请注意,这实际上是一种限制。

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

答案 2