JAVA SP T


Lets dive into snapshot of my programs!💻

4.Write a Java program that performs matrix multiplication using multiple threads.

💡Code:

 class program4 {
              public static void main(String[] args) {
              int[][] matrixA = {
              {1, 2, 3},
              {4, 5, 6},
              {7, 8, 9}
              };
              
              int[][] matrixB = {
              {9, 8, 7},
              {6, 5, 4},
              {3, 2, 1}
              };
              
              int[][] result = multiplyMatrices(matrixA, matrixB);
              
              // Display the result matrix
              System.out.println("Resultant Matrix:");
              displayMatrix(result);
              }
              
              public static int[][] multiplyMatrices(int[][] matrixA, int[][] matrixB) {
              int rowsA = matrixA.length;
              int columnsA = matrixA[0].length;
              int columnsB = matrixB[0].length;
              
              int[][] result = new int[rowsA][columnsB];
              
              // Create threads to perform multiplication
              Thread[][] threads = new Thread[rowsA][columnsB];
              
              for (int i = 0; i < rowsA; i++) {
              for (int j = 0; j < columnsB; j++) {
              threads[i][j] = new Thread(new MultiplicationTask(matrixA, matrixB, result, i, j, columnsA));
              threads[i][j].start();
              }
              }
              
              // Wait for all threads to complete
              for (int i = 0; i < rowsA; i++) {
              for (int j = 0; j < columnsB; j++) {
              try {
              threads[i][j].join();
              } catch (InterruptedException e) {
              e.printStackTrace();
              }
              }
              }
              
              return result;
              }
              
              public static void displayMatrix(int[][] matrix) {
              for (int[] row : matrix) {
              for (int element : row) {
              System.out.print(element + " ");
              }
              System.out.println();
              }
              }
              }
              
              class MultiplicationTask implements Runnable {
              private final int[][] matrixA;
              private final int[][] matrixB;
              private final int[][] result;
              private final int row;
              private final int column;
              private final int columnsA;
              
              public MultiplicationTask(int[][] matrixA, int[][] matrixB, int[][] result, int row, int column, int columnsA) {
              this.matrixA = matrixA;
              this.matrixB = matrixB;
              this.result = result;
              this.row = row;
              this.column = column;
              this.columnsA = columnsA;
              }
              
              public void run() {
              int columnsB = matrixB[0].length;
              int sum = 0;
              for (int i = 0; i < columnsA; i++) {
              sum += matrixA[row][i] * matrixB[i][column];
              }
              result[row][column] = sum;
              }
              }

📸Output :

output