java.lang.management

接口
异常
java.lang.Object
  继承者 java.lang.management.ThreadInfo

public class ThreadInfo
     
extends Object

线程信息。ThreadInfo 包含有关线程的信息,包括:

常规线程信息

  • 线程 ID。
  • 线程名称。

执行信息

  • 线程状态。
  • 由于以下原因阻塞线程的对象:
  • 拥有阻塞线程对象的线程的 ID。
  • 线程的堆栈跟踪。
  • 线程锁定的对象监视器列表。
  • 线程锁定的可拥有同步器列表。

同步统计数据

此线程信息类设计用于监视系统,不用于同步控制。

MXBean 映射

ThreadInfo 映射到一个具有 from 方法中指定属性的 CompositeData

从以下版本开始:
1.5
另请参见:
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
 

方法详细信息

getThreadId

public long getThreadId()
返回与此 ThreadInfo 关联的线程的 ID。

返回:
关联线程的 ID。

getThreadName

public String getThreadName()
返回与此 ThreadInfo 关联的线程的名称。

返回:
关联线程的名称。

getThreadState

public Thread.State getThreadState()
返回与此 ThreadInfo 关联的线程的状态。

返回:
关联线程的 Thread.State

getBlockedTime

public long getBlockedTime()
返回自从启用线程争用监视以来,与此 ThreadInfo 关联的线程被阻塞进入或重进入监视器的近似累计时间(以毫秒为单位)。即自从上次启用线程争用监视以来,线程处于 BLOCKED 状态的总累计时间。如果线程争用监视被禁用,此方法将返回 -1

Java 虚拟机可能会使用高精度计时器测量时间。当重新启用线程争用监视时,将重置这个统计数据。

返回:
线程进入 BLOCKED 状态的近似累计时间(以毫秒为单位);如果禁用了线程争用监视,则返回 -1
抛出:
UnsupportedOperationException - 如果 Java 虚拟机不支持此操作。
另请参见:
ThreadMXBean.isThreadContentionMonitoringSupported(), ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)

getBlockedCount

public long getBlockedCount()
返回与此 ThreadInfo 关联的线程被阻塞进入或重进入监视器的总次数。即线程为 BLOCKED 状态的次数。

返回:
线程进入 BLOCKED 状态的总次数。

getWaitedTime

public long getWaitedTime()
返回自从启用线程争用监视以来,与此 ThreadInfo 关联的线程等待通知的近似累计时间(以毫秒为单位)。即自从启用线程争用监视以来,线程处于 WAITINGTIMED_WAITING 状态的总累计时间。如果线程争用监视被禁用,此方法将返回 -1

Java 虚拟机可能会使用高精度计时器测量时间。当重新启用线程争用监视时,将重置这个统计数据。

返回:
线程为 WAITINGTIMED_WAITING 状态的近似累计时间(以毫秒为单位);如果禁用了线程争用监视,则返回 -1
抛出:
UnsupportedOperationException - 如果 Java 虚拟机不支持此操作。
另请参见:
ThreadMXBean.isThreadContentionMonitoringSupported(), ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)

getWaitedCount

public long getWaitedCount()
返回与此 ThreadInfo 关联的线程等待通知的总次数。即线程处于 WAITINGTIMED_WAITING 状态的次数。

返回:
线程处于 WAITINGTIMED_WAITING 状态的总次数。

getLockInfo

public LockInfo getLockInfo()
返回对象的 LockInfo,与此 ThreadInfo 关联的线程被阻塞并等待该对象。 线程可以被阻塞并等待以下内容之一:

如果线程不处于以上任何状态之一,那么此方法返回 null

返回:
对象的 LockInfo,线程将锁定并等待该对象(如果有);否则返回 null
从以下版本开始:
1.6

getLockName

public String getLockName()
返回对象的 字符串表示形式,与此 ThreadInfo 关联的线程被锁定并等待该对象。此方法等效于调用:
  getLockInfo().toString()
 

如果此线程没有被阻塞并等待任何对象,或者没有任何线程拥有该对象,那么此方法将返回 null

返回:
对象的字符串表示形式,线程在该对象上被阻塞(如果有);否则返回 null
另请参见:
getLockInfo()

getLockOwnerId

public long getLockOwnerId()
返回拥有对象的线程的 ID,与此 ThreadInfo 关联的线程被阻塞并等待该对象。如果此线程没有被阻塞并等待任何对象,或者没有任何线程拥有该对象,那么此方法将返回 -1

返回:
对象(此线程在其上阻塞)所有者线程的线程 ID;如果此线程没有被阻塞,或者没有任何线程拥有该对象,则返回 -1
另请参见:
getLockInfo()

getLockOwnerName

public String getLockOwnerName()
返回拥有对象的线程的名称,与此 ThreadInfo 关联的线程被阻塞并等待该对象。如果此线程没有被阻塞并等待任何对象,或者没有任何线程拥有该对象,那么此方法将返回 null

返回:
拥有对象(此线程在其上阻塞)的线程的名称;如果此线程没有被阻塞,或者没有任何线程拥有该对象,则返回 null
另请参见:
getLockInfo()

getStackTrace

public StackTraceElement[] getStackTrace()
返回与此 ThreadInfo 关联的线程的堆栈跟踪。如果没有为此线程信息请求堆栈跟踪,此方法将返回长度为 0 的数组。若返回的数组不是长度为 0 的数组,则其第一个元素代表堆栈顶,它是该序列中最新的方法调用。最后一个元素代表堆栈底,是该序列中最旧的方法调用。

某些 Java 虚拟机在某些情况下可能会从堆栈跟踪中忽略一个或多个堆栈帧。在极端情况下,没有关于此 ThreadInfo 关联线程堆栈跟踪信息的虚拟机可以从此方法返回一个长度为 0 的数组。

返回:
线程的 StackTraceElement 对象数组。

isSuspended

public boolean isSuspended()
测试与此 ThreadInfo 关联的线程是否被挂起。如果已经调用了 Thread.suspend() 方法,此方法将返回 true

返回:
如果线程被挂起,则返回 true;否则返回 false

isInNative

public boolean isInNative()
测试与此 ThreadInfo 关联的线程是否通过 Java 本机接口 (JNI) 执行本机代码。JNI 本机代码不包括虚拟机支持代码或由虚拟机生成的已编译本机代码。

返回:
如果线程执行本机代码,则返回 true;否则返回 false

toString

public String toString()
返回此线程信息的字符串表示形式。此字符串的格式取决于实现。 返回的字符串通常包括 线程名线程 ID、它的 状态堆栈跟踪(如果有)。

覆盖:
Object 中的 toString
返回:
此线程信息的字符串表示形式。

from

public static ThreadInfo from(CompositeData cd)
返回由给定 CompositeData 表示的 ThreadInfo 对象。除非上文另行指定,否则给定的 CompositeData 必须包含以下属性:
属性名称 类型
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 - 表示 ThreadInfoCompositeData
返回:
如果 cd 不为 null,则返回由 cd 表示的 ThreadInfo 对象;否则返回 null
抛出:
IllegalArgumentException - 如果 cd 不表示具有上述属性的 ThreadInfo

getLockedMonitors

public MonitorInfo[] getLockedMonitors()
返回 MonitorInfo 对象数组,每个数组元素表示关联此 ThreadInfo 的线程当前锁定的对象监视器。 如果没有为此线程信息请求任何锁定的监视器,或者线程没有锁定任何监视器,那么此方法返回长度为 0 的数组。

返回:
MonitorInfo 对象数组,表示线程锁定的对象监视器。
从以下版本开始:
1.6

getLockedSynchronizers

public LockInfo[] getLockedSynchronizers()
返回 LockInfo 对象数组,每个数组元素表示关联此 ThreadInfo 的线程当前锁定的 可拥有同步器。 如果没有为此线程信息请求任何锁定的同步器,或者线程没有锁定任何同步器,那么此方法返回长度为 0 的数组。

返回:
LockInfo 对象数组,表示线程锁定的可拥有同步器。
从以下版本开始:
1.6