>>95 要はスレッドに引数を与えて処理完了を待てばいい(結果は戻さず、垂れ流しでいい)ってことでしょ。 import java.util.ArrayList; ... final int[][] a = new int[3][3]; final int[][] b = new int[3][3]; ... (行列a、bの要素に値を入力) ... ArrayList threads = new ArrayList(3 * 3); for (int i = 0; i < 3; i++) { final int r = i; for (int j = 0; j < 3; j++) { final int c = j; Thread th = new Thread(new Runnable() { // final指定されたa, b, r, cが渡される(参照できる) public void run() { int ab_rc = 0; for (int k = 0; k < 3; k++) ab_rc += a[r][k] * b[k][c]; // こんなんだっけw System.out.println("("+ r +","+ c +") : "+ ab_rc); // とか、なんか適当に表示? } }); threads.add(th); } } for (Thread thread : threads) thread.join(); ... 動作未確認。古くさい部分とかあったらむしろ教えて