How to Display all Threads Status in Java?

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 packageimport java.util.Set;// Class 1// helper Class implementing Runnable interfaceclass 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 statuspublic 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:




