相关疑难解决方法(0)

我应该尽可能使用并行流吗?

使用Java 8和lambdas,可以很容易地将集合作为流进行迭代,并且易于使用并行流.来自docs的两个例子,第二个使用parallelStream:

myShapesCollection.stream()
    .filter(e -> e.getColor() == Color.RED)
    .forEach(e -> System.out.println(e.getName()));

myShapesCollection.parallelStream() // <-- This one uses parallel
    .filter(e -> e.getColor() == Color.RED)
    .forEach(e -> System.out.println(e.getName()));
Run Code Online (Sandbox Code Playgroud)

只要我不关心顺序,使用并行是否总是有益的?人们会认为将更多核心的工作划分得更快.

还有其他考虑因素吗?什么时候应该使用并行流?什么时候应该使用非并行?

(这个问题被要求引发关于如何以及何时使用并行流的讨论,而不是因为我认为总是使用它们是一个好主意.)

java parallel-processing java-8 java-stream

455
推荐指数
5
解决办法
14万
查看次数

在Java 8中并行生成了多少个线程?

在JDK8中,当我使用parallelStream时会产生多少个线程?例如,在代码中:

list.parallelStream().forEach(/** Do Something */);
Run Code Online (Sandbox Code Playgroud)

如果此列表包含100000个项目,将生成多少个线程?

另外,每个线程都可以获得相同数量的项目,还是随机分配?

java multithreading java.util.concurrent java-8

59
推荐指数
2
解决办法
2万
查看次数