【发布时间】:2019-03-09 13:27:57
【问题描述】:
我在 java 中有一个 for 循环,它具有以下结构,我需要并行化为固定数量的线程。假设该号码在numThreads 中。下面给出了 for 循环。请注意,只有外部循环需要并行化。我想我需要使用 Executor,但我不知道如何将工作负载拆分为不同的线程,以及是否会改变我在循环内的索引,如isInsulator[x][y] 之类的语句。基本上我想要不同的线程拆分 X 的值并为分配给它们的那些 x 值运行 for 循环。那有意义吗?任何人都可以帮助我实现这一目标,或者请把我推向正确的方向吗?
【问题讨论】:
-
无关:不要因为可以使用空行。您以某种方式使用垂直间距来group 事物。只是到处都是空行并不能帮助您的人类读者。从相反的方面来说。空行很好,但作为非空行,你使用它们是因为它有意义,而不是因为你可以!
-
是数组(isInsulator、isHeater、nextArr 和 currArr)类变量还是局部变量?
-
你能详细介绍一下 giveHeat 的方法吗?它是线程安全的吗?
-
giveHeat()是否使用上一次迭代的结果? (我怀疑它可能会在您传递x - 1时这样做。)如果是这样,那么您不能使用并行处理。 -
数组 isInsulator、isHeater、nextArr 和 currArr 是类变量。 giveHeat() 不是线程安全的。不过,目前我并不担心这一点。我将更改通话以避免竞争条件。
标签: java multithreading parallel-processing