猿问

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

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


慕村225694
浏览 784回答 2
2回答

一只萌萌小番薯

编写一个基准测试(这样你就可以证明并行处理确实更快),使用 JMH。将代码重写为produce_inputs->process->collect_or_summarize管道使用 parallel Streams API(它使用内部 fork-join 池调整到盒子上的 CPU 数量)。比较顺序和并行处理的性能。int result = IntStream.generate(() -> 42) // 惰性输入源         .limit(100) // 限制输入数量         .parallel() // 使用并行处理// .sequential() // ...或顺序处理         .map(x -> x + 1) // 进行处理         .reduce(0, Math::addExact); //总结结果// .collect(toList()); // ...或者只是将其收集到容器中
随时随地看视频慕课网APP

相关分类

Java
我要回答