试用线程的方法编写两个 4*4矩阵的相乘的计算程序,用4个线程完成结果 矩阵每一行的计算。java程序
时间: 2024-02-16 15:02:26 浏览: 120
两个矩阵相乘的算法之java
4星 · 用户满意度95%
好的,下面是使用线程编写两个矩阵相乘的Java程序的示例代码:
```java
public class MatrixMultiplication {
private static final int ROWS = 4;
private static final int COLS = 4;
private static int[][] matrix1 = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16} };
private static int[][] matrix2 = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16} };
private static int[][] result = new int[ROWS][COLS];
private static class MultiplyThread extends Thread {
private int start;
private int end;
public MultiplyThread(int start, int end) {
this.start = start;
this.end = end;
}
public void run() {
for (int i = start; i < end; i++) {
for (int j = 0; j < COLS; j++) {
result[i][j] = 0;
for (int k = 0; k < COLS; k++) {
result[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}
}
}
public static void main(String[] args) throws InterruptedException {
MultiplyThread t1 = new MultiplyThread(0, 1);
MultiplyThread t2 = new MultiplyThread(1, 2);
MultiplyThread t3 = new MultiplyThread(2, 3);
MultiplyThread t4 = new MultiplyThread(3, 4);
t1.start();
t2.start();
t3.start();
t4.start();
t1.join();
t2.join();
t3.join();
t4.join();
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
System.out.print(result[i][j] + " ");
}
System.out.println();
}
}
}
```
在这个程序中,我们定义了两个 4x4 的矩阵 `matrix1` 和 `matrix2`,以及一个结果矩阵 `result`。然后我们使用了 4 个线程来计算结果矩阵的每一行,每个线程计算一行。我们创建了一个内部类 `MultiplyThread` 来表示每个线程,它接受两个参数 `start` 和 `end`,表示要计算的行数范围。在 `run` 方法中,我们使用了三重循环来计算每个元素的值,并将结果存入 `result` 矩阵中。
最后,我们在 `main` 方法中创建了 4 个线程,并调用 `start` 方法开始执行。然后使用 `join` 方法等待所有线程执行完毕,最后输出结果矩阵。
希望这个示例代码能够帮助您理解如何使用线程来编写矩阵相乘的计算程序。如果还有任何问题,请随时提出。
阅读全文