Threads are light-weight processes within a process.. Multithreading in java is a feature that allows concurrent execution of two or more parts of a program to maximize the utilization of CPU. here the approach to retrieve the state of the thread is via getState() method of the Thread class. A java thread can exist in any one of the following states, the status of a thread is the state in which it exists at a given instance. The life cycle of a thread as shown above is the best way out to learn more about the states where the states are as follows:
- New
- Runnable
- Blocked
- Waiting
- Timed Waiting
- Terminated
Note: When a thread is getting executed all other threads are in blocking state and not in waiting state.
Procedure: Displaying thread status
- Threads are created by implementing the runnable interface.
- The status of a thread can be retrieved by getState() method of the Thread class object.
Example:
Java
// Java Program to Display all Threads Status Â
// Importing Set class from java.util package import java.util.Set; Â
// Class 1 // helper Class implementing Runnable interface class MyThread implements Runnable { Â
    // run() method whenever thread is invoked     public void run()     { Â
        // Try block to check for exceptions         try { Â
            // making thread to             Thread.sleep( 2000 );         } Â
        // Catch block to handle the exceptions         catch (Exception err) { Â
            // Print the exception             System.out.println(err);         }     } } Â
// Class 2 // Main Class to check thread status public class GFG { Â
    // Main driver method     public static void main(String args[]) throws Exception     { Â
        // Iterating to create multiple threads         // Customly creating 5 threads         for ( int thread_num = 0 ; thread_num < 5 ;              thread_num++) { Â
            // Creating single thread object             Thread t = new Thread( new MyThread()); Â
            // Setting name of the particular thread             // using setName() method             t.setName( "MyThread:" + thread_num); Â
            // Starting the current thread             // using start() method             t.start();         } Â
        // Creating set object to hold all the threads where         // Thread.getAllStackTraces().keySet() returns         // all threads including application threads and         // system threads         Set<Thread> threadSet             = Thread.getAllStackTraces().keySet(); Â
        // Now, for loop is used to iterate through the         // threadset         for (Thread t : threadSet) { Â
            // Printing the thread status using getState()             // method             System.out.println( "Thread :" + t + ":"                                + "Thread status : "                                + t.getState());         }     } } |
Â
 Output:
Â