【发布时间】:2020-03-01 20:06:28
【问题描述】:
我有一个整数数组,我必须为每个值计算一些数字。我正在尝试将其并行化,例如我将数组分成多个分区,然后在它自己的线程中计算每个分区。为此,我创建了一个遍历分区的 for 循环,如下所示:
for (int i = 0; i < arrSplit.length; i++) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
for (int j = arrSplit[i].startIndex; j < arrSplit[i].startIndex+arrSplit[i].length; j++) {
factors[j] = numPrimeFactors(values[j]);
}
}
});
}
我遇到了以下两个问题:
- “在封闭范围内定义的局部变量必须是最终或有效最终” - 我知道我在“arrSplit[i]”中的变量“i”超出了范围,但我不知道不知道如何访问它,但不太明白为什么它超出了范围。
- 我怎样才能加入我的线程? - 如果我要加入 for 循环中的每个线程,我会有效地使并行化过时,因为下一个线程只会在第一个线程已经加入后才启动,对吧?那我该怎么办呢?
【问题讨论】:
标签: java multithreading concurrency parallel-processing thread-safety