【发布时间】:2016-10-29 21:09:16
【问题描述】:
我发现了类似的问题,但不是我想要的。
我需要将一个 1024x1024 的矩阵分成 4 个等份的部分,但是我必须花费每个部分的开头和结尾来在另一个类中使用线程。我考虑过使用两个循环,但我不知道如何正确更改变量的值,因为它超过了最大值。
代码:
private static final int MAX_MATRIX = 1024;
private static final int NUM_THREADS = 4;
int start_row = 0, end_row = 0, start_column = 0, end_column = 0;
for (int i = 0; i < NUM_THREADS/2; i++){
end_row = start_row + (MAX_MATRIX/2);
for (int j = 0; j < (NUM_THREADS/2); j++){
end_column = start_column + (MAX_MATRIX/2);
myTask[i] = new TaskAnalyze(start_row, end_row, start_column, end_column, int_radom);
myThreads[i] = new Thread(myTask[i],"TASK " + i);
}
start_column += MAX_MATRIX/2;
start_row += MAX_MATRIX/2;
}
int_random 是矩阵。
应该有的是:
myTask[0] = new TaskAnalyze(0, 512, 0, 512, int_radom);
myTask[1] = new TaskAnalyze(0, 512, 512, 1024, int_radom);
myTask[2] = new TaskAnalyze(512, 1024, 0, 512, int_radom);
myTask[3] = new TaskAnalyze(512, 1024, 512, 1024, int_radom);
有什么建议吗?
【问题讨论】:
-
您有一个
j循环,其中不使用j。 -
嗯...我放它是因为它可以帮助更改值,我应该删除它吗?
标签: java multithreading loops matrix division