How to Monitor a Thread's Status in Java? - GeeksforGeeks

30 Sep, 2021
The Java language support thread synchronization through the use of monitors. A monitor is associated with a specific data item and functions as a lock on that data. When a thread holds the monitor for some data item, other threads are locked out and cannot inspect or modify the data. In order to monitor a thread’s status Java have predefined currentThread.getName() method that is extended by Thread Class.The getName() method of java.lang.reflect.Method class is used to get the name of the entity, as a String, that entity can be class, interface, array, enum, method, etc. of the class object. The getName() method of java.lang.reflect. Method class is helpful to get the name of methods, as a String. To get name of all methods of a class, get all the methods of that class object. Then call getName() on those method objects.
Syntax:
public String getName()
Return Value: It returns the name of the method, as String.
Example:
Java
// Java Program to Monitor a Thread's Status // Class 1// Helper classclass MyThread extends Thread {     // Initially initializing states using boolean methods    boolean waiting = true;    boolean ready = false;     // Constructor of this class    MyThread() {}     // Methods of this class are as follows:     // Method 1    synchronized void startWait()    {        try {            while (!ready)                wait();        }        catch (InterruptedException exc) {            System.out.println("wait() interrupted");        }    }     // Method 2    synchronized void notice()    {        ready = true;        notify();    }     // Method 3    // To run threads when called using start()    public void run()    {         // Getting the name of current thread        // using currentThread() and getName() methods        String thrdName = Thread.currentThread().getName();         // Print the corresponding thread        System.out.println(thrdName + " starting.");         // While the thread is in waiting state        while (waiting)            System.out.println("waiting:" + waiting);         // Display message        System.out.println("waiting...");         // calling the Method1        startWait();         // Try block to check for exceptions        try {             // Making thread to pause execution for a            // certain time of 1 second using sleep() method            Thread.sleep(1000);        }         // Catch block to handle the exceptions        catch (Exception exc) {             // Display if interrupted            System.out.println(thrdName + " interrupted.");        }         // Else display the thread is terminated.        System.out.println(thrdName + " terminating.");    }} // Class 2// Main classpublic class GFG {     // Method 1    // To get the thread status    static void showThreadStatus(Thread thrd)    {        System.out.println(thrd.getName()                           + "  Alive:=" + thrd.isAlive()                           + " State:=" + thrd.getState());    }     // Method 2    // Main driver method    public static void main(String args[]) throws Exception    {         // Creating an object of our thread class        // in the main() method        MyThread thrd = new MyThread();         // Setting the name for the threads        // using setname() method        thrd.setName("MyThread #1");         // getting the status of current thread        showThreadStatus(thrd);         // Starting the thread which automatically invokes        // the run() method for the thread        thrd.start();         // Similarly repeating the same        Thread.sleep(50);        showThreadStatus(thrd);         // hee notice we change the flag value        // thai is no more in waiting state now        thrd.waiting = false;         Thread.sleep(50);        showThreadStatus(thrd);        thrd.notice();         Thread.sleep(50);        showThreadStatus(thrd);         // Till thread is alive        while (thrd.isAlive())             // Print the statement            System.out.println("alive");         // Callin the method        showThreadStatus(thrd);    }}
Output:
anikakapoor
simranarora5sos
Java-Multithreading
Picked
Java
Java Programs
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Constructors in Java
Exceptions in Java
Functional Interfaces in Java
Different ways of Reading a text file in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
How to Iterate HashMap in Java?
Iterate through List in Java