2016-10-29 5 views
-1

비슷한 질문을 찾았지만 원하는 것을 찾지 못했습니다.자바의 분할 매트릭스

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] 새 TaskAnalyze (0, 512, 0, 512을 int_radom) =;

myTask [1] = 새 TaskAnalyze (0, 512, 512, 1024, int_radom);

myTask [2] = 새 TaskAnalyze (512, 1024, 0, 512, int_radom);

myTask [3] = 새 TaskAnalyze (512, 1024, 512, 1024, int_radom);

제안 사항?

+0

을 당신은이를 앞에' j' 루프는'j'를 사용하지 않습니다. –

+0

음 ... 값을 변경하는 데 도움이 될 수 있으므로 넣으면 제거해야합니까? – Kuru

답변

0

이 시도 :

int MAX_MATRIX = 1024; 
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++){ 
    start_row = i*MAX_MATRIX/2; 
    end_row = start_row + MAX_MATRIX/2; 
    for (int j = 0; j < NUM_THREADS/2; j++){ 
     start_column = j*MAX_MATRIX/2; 
     end_column = start_column + MAX_MATRIX/2; 
     System.out.println(start_row + "," + end_row + "," + start_column + "," + end_column); 
    } 
} 

당신에게 다음과 같은 출력을 제공해야한다 :

다음
0,512,0,512 
0,512,512,1024 
512,1024,0,512 
512,1024,512,1024 

당신이 당신의 라인으로 System.out.println 라인을 대체 할 수

myTask[i] = new TaskAnalyze(start_row, end_row, start_column, end_column, int_radom); 
myThreads[i] = new Thread(myTask[i],"TASK " + i); 
+0

Omg, 나는 이런 종류의 도움을 기대하지 않았다. 나는 그것이 가지고있는 것과 함께 작동한다면 시도 할 것이다. – Kuru

+0

대단히 감사합니다! 그것은 대부분의 오류를 해결했지만 idk는 왜이 루프 후에 스레드를 시작할 때 "NullPointerException"이라고 말합니까? 이 일은 내가 너를 도왔다. 다시 감사합니다. – Kuru