gpt4 book ai didi

java - 在多个线程中使用 forEach() 或使用 forEach() 和 lambda 进行集合迭代

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:34 26 4
gpt4 key购买 nike

假设我有一个包含数千个独立对象的数组。现在我想跳过它们中的每一个并执行相同的操作,例如,更改特定字段的值。

乍一看,Java 8 中有多种方法可以完成此类任务,例如:

  1. forEach(); 里面有 lambda 表达式:
    itemsArr.forEach(item -> item.setValue("test"));
  2. forEach(); 带迭代器。
  3. 将数组分成多个批处理/ block ,并在单独的线程中处理每个批处理。例如:定义 2 个线程,从 #0 到 999 的元素将在线程 «A» 中执行,其余元素在线程 «B» 中执行。

最终的结果应该是:100%的数组元素应该被关心了。
完成此类任务的最佳方法是什么?

更新:有一个类似的question但谈到另一个方面,我感兴趣的不是不同类型的循环性能比较(whileforforEach) 但在数组遍历任务中威胁与 lambdas 的性能比较中?

最佳答案

使用并行流,JVM 将使用多个线程处理该流:

Arrays.stream(itemsArr).parallel().forEach(item -> item.setValue("test"));

虽然你似乎有一个集合,而不是一个数组,所以:

itemsArr.parallelStream().forEach(item -> item.setValue("test"));

关于java - 在多个线程中使用 forEach() 或使用 forEach() 和 lambda 进行集合迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com