Class: sun.management.ThreadImpl
- class ThreadImpl
- implements ThreadMXBean
Methods
-
ThreadImpltop
ThreadImpl(VMManagement vm)Constructor of ThreadImpl class. -
dumpAllThreadstop
public ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)Returns the thread info for all live threads with stack trace and synchronization information. Some threads included in the returned array may have been terminated when this method returns.This method returns an array of java.lang.management.ThreadInfo objects as specified in the java.lang.management.ThreadMXBean.getThreadInfo(long[], boolean, boolean) method.
- Specified by:
- dumpAllThreads from ThreadMXBean
-
dumpThreads0top
static native private ThreadInfo[] dumpThreads0(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers) -
findDeadlockedThreadstop
public long[] findDeadlockedThreads()Finds cycles of threads that are in deadlock waiting to acquire object monitors or ownable synchronizers. Threads are deadlocked in a cycle waiting for a lock of these two types if each thread owns one lock while trying to acquire another lock already held by another thread in the cycle.This method is designed for troubleshooting use, but not for synchronization control. It might be an expensive operation.
- Specified by:
- findDeadlockedThreads from ThreadMXBean
-
findDeadlockedThreads0top
static native private Thread[] findDeadlockedThreads0() -
findMonitorDeadlockedThreadstop
public long[] findMonitorDeadlockedThreads()Finds cycles of threads that are in deadlock waiting to acquire object monitors. That is, threads that are blocked waiting to enter a synchronization block or waiting to reenter a synchronization block after an Object.wait call, where each thread owns one monitor while trying to obtain another monitor already held by another thread in a cycle.More formally, a thread is monitor deadlocked if it is part of a cycle in the relation "is waiting for an object monitor owned by". In the simplest case, thread A is blocked waiting for a monitor owned by thread B, and thread B is blocked waiting for a monitor owned by thread A.
This method is designed for troubleshooting use, but not for synchronization control. It might be an expensive operation.
This method finds deadlocks involving only object monitors. To find deadlocks involving both object monitors and ownable synchronizers, the findDeadlockedThreads method should be used.
- Specified by:
- findMonitorDeadlockedThreads from ThreadMXBean
-
findMonitorDeadlockedThreads0top
static native private Thread[] findMonitorDeadlockedThreads0() -
getAllThreadIdstop
public long[] getAllThreadIds()Returns all live thread IDs. Some threads included in the returned array may have been terminated when this method returns.- Specified by:
- getAllThreadIds from ThreadMXBean
-
getCurrentThreadCpuTimetop
public long getCurrentThreadCpuTime()Returns the total CPU time for the current thread in nanoseconds. The returned value is of nanoseconds precision but not necessarily nanoseconds accuracy. If the implementation distinguishes between user mode time and system mode time, the returned CPU time is the amount of time that the current thread has executed in user mode or system mode.This is a convenient method for local management use and is equivalent to calling:
getThreadCpuTime(Thread.currentThread().getId());
- Specified by:
- getCurrentThreadCpuTime from ThreadMXBean
-
getCurrentThreadUserTimetop
public long getCurrentThreadUserTime()Returns the CPU time that the current thread has executed in user mode in nanoseconds. The returned value is of nanoseconds precision but not necessarily nanoseconds accuracy.This is a convenient method for local management use and is equivalent to calling:
getThreadUserTime(Thread.currentThread().getId());
- Specified by:
- getCurrentThreadUserTime from ThreadMXBean
-
getDaemonThreadCounttop
public int getDaemonThreadCount()Returns the current number of live daemon threads.- Specified by:
- getDaemonThreadCount from ThreadMXBean
-
getPeakThreadCounttop
public int getPeakThreadCount()Returns the peak live thread count since the Java virtual machine started or peak was reset.- Specified by:
- getPeakThreadCount from ThreadMXBean
-
getThreadCounttop
public int getThreadCount()Returns the current number of live threads including both daemon and non-daemon threads.- Specified by:
- getThreadCount from ThreadMXBean
-
getThreadCpuTimetop
public long getThreadCpuTime(long id)Returns the total CPU time for a thread of the specified ID in nanoseconds. The returned value is of nanoseconds precision but not necessarily nanoseconds accuracy. If the implementation distinguishes between user mode time and system mode time, the returned CPU time is the amount of time that the thread has executed in user mode or system mode.If the thread of the specified ID is not alive or does not exist, this method returns -1. If CPU time measurement is disabled, this method returns -1. A thread is alive if it has been started and has not yet died.
If CPU time measurement is enabled after the thread has started, the Java virtual machine implementation may choose any time up to and including the time that the capability is enabled as the point where CPU time measurement starts.
- Specified by:
- getThreadCpuTime from ThreadMXBean
-
getThreadInfotop
public ThreadInfo getThreadInfo(long id)Returns the thread info for a thread of the specified id with no stack trace. This method is equivalent to calling:getThreadInfo(id, 0);
This method returns a ThreadInfo object representing the thread information for the thread of the specified ID. The stack trace, locked monitors, and locked synchronizers in the returned ThreadInfo object will be empty. If a thread of the given ID is not alive or does not exist, this method will return null. A thread is alive if it has been started and has not yet died.
MBeanServer access:
The mapped type of ThreadInfo is CompositeData with attributes as specified in the ThreadInfo.from method.- Specified by:
- getThreadInfo from ThreadMXBean
-
getThreadInfotop
public ThreadInfo getThreadInfo(long id, int maxDepth)Returns a thread info for a thread of the specified id, with stack trace of a specified number of stack trace elements. The maxDepth parameter indicates the maximum number of StackTraceElement to be retrieved from the stack trace. If maxDepth == Integer.MAX_VALUE, the entire stack trace of the thread will be dumped. If maxDepth == 0, no stack trace of the thread will be dumped. This method does not obtain the locked monitors and locked synchronizers of the thread.When the Java virtual machine has no stack trace information about a thread or maxDepth == 0, the stack trace in the ThreadInfo object will be an empty array of StackTraceElement.
If a thread of the given ID is not alive or does not exist, this method will return null. A thread is alive if it has been started and has not yet died.
MBeanServer access:
The mapped type of ThreadInfo is CompositeData with attributes as specified in the ThreadInfo.from method.- Specified by:
- getThreadInfo from ThreadMXBean
-
getThreadInfotop
public ThreadInfo[] getThreadInfo(long[] ids)Returns the thread info for each thread whose ID is in the input array ids with no stack trace. This method is equivalent to calling:getThreadInfo(ids, 0);
This method returns an array of the ThreadInfo objects. The stack trace, locked monitors, and locked synchronizers in each ThreadInfo object will be empty. If a thread of a given ID is not alive or does not exist, the corresponding element in the returned array will contain null. A thread is alive if it has been started and has not yet died.
MBeanServer access:
The mapped type of ThreadInfo is CompositeData with attributes as specified in the ThreadInfo.from method.- Specified by:
- getThreadInfo from ThreadMXBean
-
getThreadInfotop
public ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)Returns the thread info for each thread whose ID is in the input array ids, with stack trace of a specified number of stack trace elements. The maxDepth parameter indicates the maximum number of StackTraceElement to be retrieved from the stack trace. If maxDepth == Integer.MAX_VALUE, the entire stack trace of the thread will be dumped. If maxDepth == 0, no stack trace of the thread will be dumped. This method does not obtain the locked monitors and locked synchronizers of the threads.When the Java virtual machine has no stack trace information about a thread or maxDepth == 0, the stack trace in the ThreadInfo object will be an empty array of StackTraceElement.
This method returns an array of the ThreadInfo objects, each is the thread information about the thread with the same index as in the ids array. If a thread of the given ID is not alive or does not exist, null will be set in the corresponding element in the returned array. A thread is alive if it has been started and has not yet died.
MBeanServer access:
The mapped type of ThreadInfo is CompositeData with attributes as specified in the ThreadInfo.from method.- Specified by:
- getThreadInfo from ThreadMXBean
-
getThreadInfotop
public ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)Returns the thread info for each thread whose ID is in the input array ids, with stack trace and synchronization information.This method obtains a snapshot of the thread information for each thread including:
- the entire stack trace,
- the object monitors currently locked by the thread if lockedMonitors is true, and
- the ownable synchronizers currently locked by the thread if lockedSynchronizers is true.
This method returns an array of the ThreadInfo objects, each is the thread information about the thread with the same index as in the ids array. If a thread of the given ID is not alive or does not exist, null will be set in the corresponding element in the returned array. A thread is alive if it has been started and has not yet died.
If a thread does not lock any object monitor or lockedMonitors is false, the returned ThreadInfo object will have an empty MonitorInfo array. Similarly, if a thread does not lock any synchronizer or lockedSynchronizers is false, the returned ThreadInfo object will have an empty LockInfo array.
When both lockedMonitors and lockedSynchronizers parameters are false, it is equivalent to calling:
getThreadInfo(ids, Integer.MAX_VALUE)This method is designed for troubleshooting use, but not for synchronization control. It might be an expensive operation.
MBeanServer access:
The mapped type of ThreadInfo is CompositeData with attributes as specified in the ThreadInfo.from method.- Specified by:
- getThreadInfo from ThreadMXBean
-
getThreadInfo0top
static native private void getThreadInfo0(long[] ids, int maxDepth, ThreadInfo[] result) -
getThreadTotalCpuTime0top
static native private long getThreadTotalCpuTime0(long id) -
getThreadUserCpuTime0top
static native private long getThreadUserCpuTime0(long id) -
getThreadUserTimetop
public long getThreadUserTime(long id)Returns the CPU time that a thread of the specified ID has executed in user mode in nanoseconds. The returned value is of nanoseconds precision but not necessarily nanoseconds accuracy.If the thread of the specified ID is not alive or does not exist, this method returns -1. If CPU time measurement is disabled, this method returns -1. A thread is alive if it has been started and has not yet died.
If CPU time measurement is enabled after the thread has started, the Java virtual machine implementation may choose any time up to and including the time that the capability is enabled as the point where CPU time measurement starts.
- Specified by:
- getThreadUserTime from ThreadMXBean
-
getThreadstop
static native private Thread[] getThreads() -
getTotalStartedThreadCounttop
public long getTotalStartedThreadCount()Returns the total number of threads created and also started since the Java virtual machine started.- Specified by:
- getTotalStartedThreadCount from ThreadMXBean
-
isCurrentThreadCpuTimeSupportedtop
public boolean isCurrentThreadCpuTimeSupported()Tests if the Java virtual machine supports CPU time measurement for the current thread. This method returns true if java.lang.management.ThreadMXBean.isThreadCpuTimeSupported() returns true.- Specified by:
- isCurrentThreadCpuTimeSupported from ThreadMXBean
-
isObjectMonitorUsageSupportedtop
public boolean isObjectMonitorUsageSupported()Tests if the Java virtual machine supports monitoring of object monitor usage.- Specified by:
- isObjectMonitorUsageSupported from ThreadMXBean
-
isSynchronizerUsageSupportedtop
public boolean isSynchronizerUsageSupported()Tests if the Java virtual machine supports monitoring of ownable synchronizer usage.- Specified by:
- isSynchronizerUsageSupported from ThreadMXBean
-
isThreadContentionMonitoringEnabledtop
public synchronized boolean isThreadContentionMonitoringEnabled()Tests if thread contention monitoring is enabled.- Specified by:
- isThreadContentionMonitoringEnabled from ThreadMXBean
-
isThreadContentionMonitoringSupportedtop
public boolean isThreadContentionMonitoringSupported()Tests if the Java virtual machine supports thread contention monitoring.- Specified by:
- isThreadContentionMonitoringSupported from ThreadMXBean
-
isThreadCpuTimeEnabledtop
public boolean isThreadCpuTimeEnabled()Tests if thread CPU time measurement is enabled.- Specified by:
- isThreadCpuTimeEnabled from ThreadMXBean
-
isThreadCpuTimeSupportedtop
public boolean isThreadCpuTimeSupported()Tests if the Java virtual machine implementation supports CPU time measurement for any thread. A Java virtual machine implementation that supports CPU time measurement for any thread will also support CPU time measurement for the current thread.- Specified by:
- isThreadCpuTimeSupported from ThreadMXBean
-
resetContentionTimes0top
static native private void resetContentionTimes0(long tid) -
resetPeakThreadCounttop
public void resetPeakThreadCount()Resets the peak thread count to the current number of live threads.- Specified by:
- resetPeakThreadCount from ThreadMXBean
-
resetPeakThreadCount0top
static native private void resetPeakThreadCount0() -
setThreadContentionMonitoringEnabledtop
public void setThreadContentionMonitoringEnabled(boolean enable)Enables or disables thread contention monitoring. Thread contention monitoring is disabled by default.- Specified by:
- setThreadContentionMonitoringEnabled from ThreadMXBean
-
setThreadContentionMonitoringEnabled0top
static native private void setThreadContentionMonitoringEnabled0(boolean enable) -
setThreadCpuTimeEnabledtop
public void setThreadCpuTimeEnabled(boolean enable)Enables or disables thread CPU time measurement. The default is platform dependent.- Specified by:
- setThreadCpuTimeEnabled from ThreadMXBean
-
setThreadCpuTimeEnabled0top
static native private void setThreadCpuTimeEnabled0(boolean enable)
Fields
-
contentionMonitoringEnabled
private boolean contentionMonitoringEnabled -
cpuTimeEnabled
private boolean cpuTimeEnabled -
jvm
final private VMManagement jvm
