标签: parallelstream

Java ParallelStream:多个map或单个map

介绍

我目前正在开发一个使用 的程序Java.util.Collection.parallelStream(),并想知道是否可以使其更加多线程。

几张小地图

我想知道使用多个map是否可以Java.util.Collection.parallelStream()更好地分配任务:

List<InsertOneModel<Document>> bulkWrites = puzzles.parallelStream()
        .map(gson::toJson)
        .map(Document::parse)
        .map(InsertOneModel::new)
        .toList();
Run Code Online (Sandbox Code Playgroud)

单张大地图

例如,比以下更好的分布:

List<InsertOneModel<Document>> bulkWrites = puzzles.parallelStream()
        .map(puzzle -> new InsertOneModel<>(Document.parse(gson.toJson(puzzle))))
        .toList();
Run Code Online (Sandbox Code Playgroud)

问题

是否有一种解决方案更适合Java.util.Collection.parallelStream(),或者两者没有太大区别?

java multithreading parallelstream

4
推荐指数
1
解决办法
1908
查看次数

java中parallelStream中的错误

有人可以告诉我为什么会发生这种情况,这是预期的行为还是错误

List<Integer> a = Arrays.asList(1,1,3,3);

a.parallelStream().filter(Objects::nonNull)
        .filter(value -> value > 2)
        .reduce(1,Integer::sum)

Run Code Online (Sandbox Code Playgroud)

回答: 10

但是如果我们使用stream而不是parallelStream我得到正确的和预期的 answer 7

java reduce stream filter parallelstream

3
推荐指数
1
解决办法
63
查看次数

java IntStream并行reduce

并行运行时 a==b 为何为 false 但与组合器一起使用时却有效?

public class test {

 public static int cal(final int i) {
       return 1;
 }
 
 public static void main(String args[]) {

   int a = IntStream.range(0, 3).reduce(0, (abc, cde) -> abc + cal(cde));
   int b = IntStream.range(0, 3).parallel().reduce(0, (abc, cde) -> abc + cal(cde));
   System.out.println(a == b); // false

   int c = List.of(0, 1, 2).stream().parallel().reduce(0, (abc, cde) -> abc + cal(cde), Integer::sum);
   System.out.println(a == c); // true
  }
}
Run Code Online (Sandbox Code Playgroud)

java parallel-processing stream parallelstream

-3
推荐指数
1
解决办法
70
查看次数