java.lang.Object java.lang.management.ThreadInfo
public class ThreadInfo
线程信息。ThreadInfo 包含有关线程的信息,包括:
Object.wait
方法的通知,或者LockSupport.park
调用而暂停。线程争用监视
开始,由于同步或等待通知而阻塞线程的累计时间。某些 Java 虚拟机实现可能不支持此功能。ThreadMXBean.isThreadContentionMonitoringSupported()
方法可用于确定 Java 虚拟机是否支持此功能。此线程信息类设计用于监视系统,不用于同步控制。
from
方法中指定属性的
CompositeData
。
ThreadMXBean.getThreadInfo(long)
,
ThreadMXBean.dumpAllThreads(boolean, boolean)
方法摘要 | |
---|---|
static ThreadInfo |
from(CompositeData cd) 返回由给定 CompositeData 表示的 ThreadInfo 对象。 |
long |
getBlockedCount() 返回与此 ThreadInfo 关联的线程被阻塞进入或重进入监视器的总次数。 |
long |
getBlockedTime() 返回自从启用线程争用监视以来,与此 ThreadInfo 关联的线程被阻塞进入或重进入监视器的近似累计时间(以毫秒为单位)。 |
MonitorInfo[] |
getLockedMonitors() 返回 MonitorInfo 对象数组,每个数组元素表示关联此 ThreadInfo 的线程当前锁定的对象监视器。 |
LockInfo[] |
getLockedSynchronizers() 返回 LockInfo 对象数组,每个数组元素表示关联此 ThreadInfo 的线程当前锁定的可拥有同步器。 |
LockInfo |
getLockInfo() 返回对象的 LockInfo,与此 ThreadInfo 关联的线程被阻塞并等待该对象。 |
String |
getLockName() 返回对象的 字符串表示形式 ,与此 ThreadInfo 关联的线程被锁定并等待该对象。 |
long |
getLockOwnerId() 返回拥有对象的线程的 ID,与此 ThreadInfo 关联的线程被阻塞并等待该对象。 |
String |
getLockOwnerName() 返回拥有对象的线程的名称,与此 ThreadInfo 关联的线程被阻塞并等待该对象。 |
StackTraceElement[] |
getStackTrace() 返回与此 ThreadInfo 关联的线程的堆栈跟踪。 |
long |
getThreadId() 返回与此 ThreadInfo 关联的线程的 ID。 |
String |
getThreadName() 返回与此 ThreadInfo 关联的线程的名称。 |
Thread.State |
getThreadState() 返回与此 ThreadInfo 关联的线程的状态。 |
long |
getWaitedCount() 返回与此 ThreadInfo 关联的线程等待通知的总次数。 |
long |
getWaitedTime() 返回自从启用线程争用监视以来,与此 ThreadInfo 关联的线程等待通知的近似累计时间(以毫秒为单位)。 |
boolean |
isInNative() 测试与此 ThreadInfo 关联的线程是否通过 Java 本机接口 (JNI) 执行本机代码。 |
boolean |
isSuspended() 测试与此 ThreadInfo 关联的线程是否被挂起。 |
String |
toString() 返回此线程信息的字符串表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
方法详细信息 |
---|
public long getThreadId()
public String getThreadName()
public Thread.State getThreadState()
public long getBlockedTime()
BLOCKED
状态的总累计时间。如果线程争用监视被禁用,此方法将返回
-1。
Java 虚拟机可能会使用高精度计时器测量时间。当重新启用线程争用监视时,将重置这个统计数据。
UnsupportedOperationException
- 如果 Java 虚拟机不支持此操作。
ThreadMXBean.isThreadContentionMonitoringSupported()
,
ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
public long getBlockedCount()
BLOCKED
状态的次数。
public long getWaitedTime()
WAITING
或
TIMED_WAITING
状态的总累计时间。如果线程争用监视被禁用,此方法将返回
-1。
Java 虚拟机可能会使用高精度计时器测量时间。当重新启用线程争用监视时,将重置这个统计数据。
UnsupportedOperationException
- 如果 Java 虚拟机不支持此操作。
ThreadMXBean.isThreadContentionMonitoringSupported()
,
ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
public long getWaitedCount()
WAITING
或
TIMED_WAITING
状态的次数。
public LockInfo getLockInfo()
BLOCKED
状态,等待进入 synchronized 语句或方法。 Object.wait
方法,线程处于 WAITING
或 TIMED_WAITING
状态。 LockSupport.park
方法,线程处于 WAITING
或 TIMED_WAITING
状态。同步对象是从 LockSupport.getBlocker
方法返回的对象。通常,它是一个可拥有同步器或 Condition
。 如果线程不处于以上任何状态之一,那么此方法返回 null。
public String getLockName()
字符串表示形式
,与此
ThreadInfo 关联的线程被锁定并等待该对象。此方法等效于调用:
getLockInfo().toString()
如果此线程没有被阻塞并等待任何对象,或者没有任何线程拥有该对象,那么此方法将返回 null。
getLockInfo()
public long getLockOwnerId()
getLockInfo()
public String getLockOwnerName()
getLockInfo()
public StackTraceElement[] getStackTrace()
某些 Java 虚拟机在某些情况下可能会从堆栈跟踪中忽略一个或多个堆栈帧。在极端情况下,没有关于此 ThreadInfo 关联线程堆栈跟踪信息的虚拟机可以从此方法返回一个长度为 0 的数组。
public boolean isSuspended()
Thread.suspend()
方法,此方法将返回
true。
public boolean isInNative()
public String toString()
public static ThreadInfo from(CompositeData cd)
属性名称 类型 threadId java.lang.Long threadName java.lang.String threadState java.lang.String suspended java.lang.Boolean inNative java.lang.Boolean blockedCount java.lang.Long blockedTime java.lang.Long waitedCount java.lang.Long waitedTime java.lang.Long lockInfo javax.management.openmbean.CompositeData - MXBean 类型映射规则中指定的 LockInfo
的映射类型。如果 cd 不包含此属性,则将根据 lockName 属性的值构造 LockInfo 对象。
lockName java.lang.String lockOwnerId java.lang.Long lockOwnerName java.lang.String stackTrace javax.management.openmbean.CompositeData[] 每个元素都是表示 StackTraceElement 的 CompositeData,包含以下属性:
属性名称 类型 className java.lang.String methodName java.lang.String fileName java.lang.String lineNumber java.lang.Integer nativeMethod java.lang.Boolean lockedMonitors javax.management.openmbean.CompositeData[],其元素类型是 MonitorInfo
的映射类型,MonitorInfo 在Monitor.from
方法中指定。如果 cd 不包含此属性,那么此属性将被设置为空数组。
lockedSynchronizers javax.management.openmbean.CompositeData[],其元素是 LockInfo
的映射类型,LockInfo 在 MXBean 的类型映射规则中指定。如果 cd 不包含此属性,那么此属性将被设置为空数组。
cd
- 表示
ThreadInfo 的
CompositeData
IllegalArgumentException
- 如果
cd 不表示具有上述属性的
ThreadInfo。
public MonitorInfo[] getLockedMonitors()
MonitorInfo
对象数组,每个数组元素表示关联此
ThreadInfo 的线程当前锁定的对象监视器。 如果没有为此线程信息请求任何锁定的监视器,或者线程没有锁定任何监视器,那么此方法返回长度为 0 的数组。
public LockInfo[] getLockedSynchronizers()