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 :
