Open In App

java.lang.management.ThreadInfo Class in Java

Last Updated : 20 Jul, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

java.lang.management.ThreadInfo class contains methods to get information about a thread. This information includes:

  • Thread ID
  • Thread Name
  • State of the Thread
  • Stack trace of the Thread
  • The object upon which the Thread is blocked
  • List of object monitors that are blocked by the Thread
  • List of ownable synchronizers blocked by the Thread
  • Number of times the Thread had been blocked
  • The elapsed time for which the Thread had been blocked

Syntax: Class declaration

public class ThreadInfo
extends Object

The methods of this class are as follows: 

Methods Description
ThreadInfo from(CompositeData data) This method is used to represent this composite data as a ThreadInfo object.
getBlockedCount() This method is used to know how many times the thread associated with this ThreadInfo object had been blocked to enter a monitor or reenter a monitor.
getBlockedTime() This method is used to know for many milliseconds the thread associated with this ThreadInfo object had been blocked to enter or reenter a monitor.
getLockedMonitors() This method is used to get a list of ‘MonitorInfo‘ objects, which are currently locked by the thread associated with this ThreadInfo object.
getLockedSynchronizers() This method is used to get a list of ‘ownable‘ synchronizers, which are currently locked by the thread associated with this ThreadInfo object.
getLockInfo() This method is used to get information about the object for which the thread associated with this ThreadInfo object is blocked waiting. It returns a ‘LockInfo‘ object representing the information.
getLockName() This method is used to get the name of the object for which the thread associated with this ThreadInfo object is blocked waiting.
getLockOwnerId() This method is used to get the ID of the thread which owns the object that is blocking this thread.
getLockOwnerName() This method is used to get the Name of the thread which owns the object that is blocking this thread.
getStackTrace() This method is used to get the stack trace of a Thread.
getThreadId() This method is used to get the ID of a Thread.
getThreadName() This method is used to get the name of a Thread.
getThreadState() This method is used to get the state of a Thread.
getWaitedCount() This method is used to know how many times the thread associated with this ThreadInfo object has waited for notification.
getWaitedTime() This method is used to know for many milliseconds the thread associated with this ThreadInfo object has waited for notification.
isInNative() This method is used to determine whether this ThreadInfo object is executing the native code via the java native interface or not.
isSuspended() This method is used to determine whether the Thread associated with this ThreadInfo object is suspended or not.
toString() This method is used to get string representation of the given ThreadInfo object.

Implementation:

Example 1: Creating a new ThreadInfo object

Java




// Java Program to demonstrate ThreadInfo Class
 
// Importing required libraries
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
 
// Main class
public class GFG {
 
    // main driver method
    public static void main(String[] args)
    {
        // Try block to check for exceptions
        try {
 
            // Creating a new thread by
            // creating an object of Thread class
            Thread thread = new Thread();
 
            // running the thread using run() method
            thread.run();
 
            // Getting thread id using getId() method
            long id = thread.getId();
 
            // Creating a new ThreadInfo object
            // using that id
            ThreadInfo info
                = ManagementFactory.getThreadMXBean()
                      .getThreadInfo(id);
 
            // Print and display message on the console
            System.out.println(
                "ThreadInfo object created successfully");
        }
 
        // Catch block to handle the exceptions
        catch (Exception e) {
 
            // print the line number where exception occurs
            e.printStackTrace();
        }
    }
}


Output:

ThreadInfo object created successfully

Example 2: Common-cleaner thread using ThreadInfo class

Java




// Java Program to demonstrate ThreadInfo Class
 
// Importing required libraries
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // try block to check for exceptions
        try {
 
            long id = 10;
 
            // Creating a new ThreadInfo object
            // using this id
            ThreadInfo info
                = ManagementFactory.getThreadMXBean()
                      .getThreadInfo(id);
            // Printing information about the thread
 
            // 1. Printing thread id
            System.out.println("Thread ID: "
                               + info.getThreadId());
            // 2. Printing Thread Name
            System.out.println("Thread Name: "
                               + info.getThreadName());
            // 3. Printing thread State
            System.out.println("Thread State: "
                               + info.getThreadState());
            // 4. Printing thread waited count
            System.out.println("Waited count: "
                               + info.getWaitedCount());
            // 5. Printing thread waited time
            System.out.println("Waited time: "
                               + info.getWaitedTime());
            // 6. Printing how many times this thread had
            // been blocked
            System.out.println("Times blocked: "
                               + info.getBlockedCount());
            // 7. Printing Blocked duration
            System.out.println("Blocked duration: "
                               + info.getBlockedTime());
            // 8. Printing Locked Monitors
            System.out.println("Locked Monitors: "
                               + info.getLockedMonitors());
            // 9. Printing Locked Owner's ID
            System.out.println("Locked Owner's ID: "
                               + info.getLockOwnerId());
            // 10. Printing Locked Owner's Name
            System.out.println("Locked Owner's Name: "
                               + info.getLockOwnerName());
        }
 
        // Catch block to handle the exceptions
        catch (Exception e) {
 
            // Print the line number where exception occurred
            e.printStackTrace();
        }
    }
}


Output:

Thread ID: 10
Thread Name: Common-Cleaner
Thread State: TIMED_WAITING
Waited count: 1
Waited time: -1
Times blocked: 0
Blocked duration: -1
Locked Monitors: [Ljava.lang.management.MonitorInfo;@15aeb7ab
Locked Owner's ID: -1
Locked Owner's Name: null


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads