我在 java 中有一个 for 循环,它具有以下结构,我需要将其并行化为固定数量的线程。让我们说这个数字在numThreads. for 循环如下。请注意,只有外循环需要并行化。我想我需要使用 Executor,但我不知道如何将工作负载拆分到不同的线程中,如果这会改变我在isInsulator[x][y]. 基本上我想要不同的线程拆分 X 的值并为分配给它们的那些 x 值运行 for 循环。那有意义吗?任何人都可以帮助我实现这一目标,或者请把我推向正确的方向?
2 回答
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
编写一个基准测试(这样你就可以证明并行处理确实更快),使用 JMH。
将代码重写为
produce_inputs->process->collect_or_summarize
管道使用 parallel
Stream
s API(它使用内部 fork-join 池调整到盒子上的 CPU 数量)。比较顺序和并行处理的性能。
int result = IntStream.generate(() -> 42) // 惰性输入源 .limit(100) // 限制输入数量 .parallel() // 使用并行处理// .sequential() // ...或顺序处理 .map(x -> x + 1) // 进行处理 .reduce(0, Math::addExact); //总结结果// .collect(toList()); // ...或者只是将其收集到容器中
添加回答
举报
0/150
提交
取消