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 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:
Â