为了账号安全,请及时绑定邮箱和手机立即绑定

在java中使用多线程并行化for循环

在java中使用多线程并行化for循环

慕村225694 2021-10-27 18:53:06
我在 java 中有一个 for 循环,它具有以下结构,我需要将其并行化为固定数量的线程。让我们说这个数字在numThreads. for 循环如下。请注意,只有外循环需要并行化。我想我需要使用 Executor,但我不知道如何将工作负载拆分到不同的线程中,如果这会改变我在isInsulator[x][y]. 基本上我想要不同的线程拆分 X 的值并为分配给它们的那些 x 值运行 for 循环。那有意义吗?任何人都可以帮助我实现这一目标,或者请把我推向正确的方向?
查看完整描述

2 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

  1. 编写一个基准测试(这样你就可以证明并行处理确实更快),使用 JMH。

  2. 将代码重写为produce_inputs->process->collect_or_summarize管道

  3. 使用 parallel Streams API(它使用内部 fork-join 池调整到盒子上的 CPU 数量)。

  4. 比较顺序和并行处理的性能。

int result = IntStream.generate(() -> 42) // 惰性输入源
        .limit(100) // 限制输入数量
        .parallel() // 使用并行处理// .sequential() // ...或顺序处理
        .map(x -> x + 1) // 进行处理
        .reduce(0, Math::addExact); //总结结果// .collect(toList()); // ...或者只是将其收集到容器中


查看完整回答
反对 回复 2021-10-27
  • 2 回答
  • 0 关注
  • 783 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信