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