161 lines
		
	
	
		
			No EOL
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			No EOL
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| import java.util.Scanner;
 | |
| 
 | |
| class Matrix {
 | |
|     static int[][] matrix;
 | |
| 
 | |
|     Matrix(int rows, int columns) {
 | |
|         matrix = new int[rows][columns];
 | |
|         Scanner sc = new Scanner(System.in);
 | |
|         System.out.println("Enter the values");
 | |
|         for (int i = 0; i < rows; i++) {
 | |
|             for (int j = 0; j < columns; j++) {
 | |
|                 matrix[i][j] = sc.nextInt();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| class DisplayMatrixThread extends Thread {
 | |
|     static int[][] matrix;
 | |
| 
 | |
|     DisplayMatrixThread(Matrix matrixObj) {
 | |
|         matrix = Matrix.matrix;
 | |
|     }
 | |
| 
 | |
|     public void run() {
 | |
|         for (int[] row : matrix) {
 | |
|             for (int value : row) {
 | |
|                 System.out.print(value + "\t");
 | |
|             }
 | |
|             System.out.println();
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| class TransposeMatrixThread extends Thread {
 | |
|     int[][] matrix;
 | |
| 
 | |
|     TransposeMatrixThread(Matrix matrixObj) {
 | |
|         matrix = matrixObj.matrix;
 | |
|     }
 | |
| 
 | |
|     public void run() {
 | |
|         int rows = matrix.length;
 | |
|         int columns = matrix[0].length;
 | |
| 
 | |
|         for (int j = 0; j < columns; j++) {
 | |
|             for (int i = 0; i < rows; i++) {
 | |
|                 System.out.print(matrix[i][j] + "\t");
 | |
|             }
 | |
|             System.out.println();
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| class MaxValueThread extends Thread {
 | |
|     static int[][] matrix;
 | |
| 
 | |
|     MaxValueThread(Matrix matrixObj) {
 | |
|         matrix = Matrix.matrix;
 | |
|     }
 | |
| 
 | |
|     public void run() {
 | |
|         int max = matrix[0][0];
 | |
| 
 | |
|         for (int[] row : matrix) {
 | |
|             for (int value : row) {
 | |
|                 if (value > max) {
 | |
|                     max = value;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         System.out.println("Maximum value in the matrix: " + max);
 | |
|     }
 | |
| }
 | |
| 
 | |
| class PrincipalDiagonalThread extends Thread {
 | |
|     static int[][] matrix;
 | |
| 
 | |
|     PrincipalDiagonalThread(Matrix matrixObj) {
 | |
|         matrix = Matrix.matrix;
 | |
|     }
 | |
| 
 | |
|     public void run() {
 | |
|         int rows = matrix.length;
 | |
|         int columns = matrix[0].length;
 | |
| 
 | |
|         System.out.print("Principal Diagonal Elements: ");
 | |
|         for (int i = 0; i < Math.min(rows, columns); i++) {
 | |
|             System.out.print(matrix[i][i] + " ");
 | |
|         }
 | |
|         System.out.println();
 | |
|     }
 | |
| }
 | |
| 
 | |
| class NonDiagonalThread extends Thread {
 | |
|     static int[][] matrix;
 | |
| 
 | |
|     NonDiagonalThread(Matrix matrixObj) {
 | |
|         matrix = Matrix.matrix;
 | |
|     }
 | |
| 
 | |
|     public void run() {
 | |
|         int rows = matrix.length;
 | |
|         int columns = matrix[0].length;
 | |
| 
 | |
|         System.out.print("Non-Diagonal Elements: ");
 | |
|         for (int i = 0; i < rows; i++) {
 | |
|             for (int j = 0; j < columns; j++) {
 | |
|                 if (i != j) {
 | |
|                     System.out.print(matrix[i][j] + " ");
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         System.out.println();
 | |
|     }
 | |
| }
 | |
| 
 | |
| class ThreadMatrix {
 | |
|     public static void main(String[] args) {
 | |
|         Scanner sc = new Scanner(System.in);
 | |
|         System.out.println("Enter the no. of rows and columns");
 | |
|         int rows = sc.nextInt();
 | |
|         int columns = sc.nextInt();
 | |
|         Matrix matrixObj = new Matrix(rows, columns);
 | |
| 
 | |
|         DisplayMatrixThread t1 = new DisplayMatrixThread(matrixObj);
 | |
|         TransposeMatrixThread t2 = new TransposeMatrixThread(matrixObj);
 | |
|         MaxValueThread t3 = new MaxValueThread(matrixObj);
 | |
|         PrincipalDiagonalThread t4 = new PrincipalDiagonalThread(matrixObj);
 | |
|         NonDiagonalThread t5 = new NonDiagonalThread(matrixObj);
 | |
| 
 | |
|         try {
 | |
|             t1.start();
 | |
|             System.out.println("\nThread t1 is alive: " + t1.isAlive());
 | |
|             t1.join();
 | |
|             t2.start();
 | |
|             System.out.println("\nThread t2 is alive: " + t2.isAlive());
 | |
|             t2.join();
 | |
|             t3.start();
 | |
|             System.out.println("\nThread t3 is alive: " + t3.isAlive());
 | |
|             t3.join();
 | |
|             t4.start();
 | |
|             System.out.println("\nThread t4 is alive: " + t4.isAlive());
 | |
|             t4.join();
 | |
|             t5.start();
 | |
|             System.out.println("\nThread t5 is alive: " + t5.isAlive());
 | |
|             t5.join();
 | |
|         } catch (InterruptedException e) {
 | |
|             e.printStackTrace();
 | |
|         }
 | |
| 
 | |
|         System.out.println("\nThread t1 is alive: " + t1.isAlive());
 | |
|         System.out.println("Thread t2 is alive: " + t2.isAlive());
 | |
|         System.out.println("Thread t3 is alive: " + t3.isAlive());
 | |
|         System.out.println("Thread t4 is alive: " + t4.isAlive());
 | |
|         System.out.println("Thread t5 is alive: " + t5.isAlive());
 | |
|         
 | |
|         System.out.println("\nMain thread exits.");
 | |
|     }
 | |
| } | 
