JavaTM 2 Platform
Standard Ed. 5.0

java.lang.management
类 ThreadInfo

java.lang.Object
  继承者 java.lang.management.ThreadInfo

public class ThreadInfo
extends Object

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

常规线程信息

执行信息

同步统计数据

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

MXBean 映射

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

从以下版本开始:
1.5
另请参见:
ThreadMXBean.isThreadContentionMonitoringSupported()

方法摘要
static ThreadInfo from(javax.management.openmbean.CompositeData cd)
          返回由给定 CompositeData 表示的 ThreadInfo 对象。
 long getBlockedCount()
          返回与此 ThreadInfo 相关的被阻塞的线程进入或重新进入监视器的总次数。
 long getBlockedTime()
          返回自从启用线程争用监视以来,与此 ThreadInfo 相关的线程被阻塞进入或重新进入监视器的近似累积时间(以毫秒为单位)。
 String getLockName()
          返回监视器锁定的字符串表示形式,与此 ThreadInfo 相关的线程被锁定进入或正等待通过 Object.wait 方法得到通知。
 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 状态的总次数。

getLockName

public String getLockName()
返回监视器锁定的字符串表示形式,与此 ThreadInfo 相关的线程被锁定进入或正等待通过 Object.wait 方法得到通知。返回的监视器锁定字符串表示形式由以下内容组成:类(该对象是它的一个实例)名称、at 标记字符 '@' 和对象的 identity 哈希码的十六进制无符号表示形式。根据 System.identityHashCode(java.lang.Object) 方法的实现不同,返回的字符串可能不是惟一的。此方法返回的字符串等于以下表达式的值:
 lock.getClass().getName() + '@' + Integer.toHexString(System.identityHashCode(lock))
 
其中 lock 为监视器锁定对象。

如果线程没有被阻塞,可以进入任何监视对象,或者没有在监视器对象等待 Object.wait 调用中的通知,此方法将返回 null

返回:
监视器锁定的字符串表示形式,线程被阻塞而无法进入,或等待通过 Object.wait 方法得到通知(如果有);否则为 null

getLockOwnerId

public long getLockOwnerId()
返回线程的 ID,此线程保持对象的监视器锁定,该对象上与此 ThreadInfo 相关的线程被阻塞。如果此线程没有被阻塞或没有在任何监视器上等待,或者,如果监视器锁定没有由任何线程保持,此方法将返回 -1

返回:
对象(此线程在其上阻塞)的监视器锁定的所有者线程的线程 ID;如果此检查没有被阻塞或没有在任何监视器上等待,或者,如果监视器锁定没有由任何线程保持,则返回 -1
另请参见:
getLockName()

getLockOwnerName

public String getLockOwnerName()
返回线程的名称,此线程保持对象的监视器锁定,该对象上与此 ThreadInfo 相关的线程被阻塞。如果此线程没有被阻塞或没有在任何监视器上等待,或者,如果监视器锁定没有由任何线程保持,此方法将返回 null

返回:
保持对象(此线程在其上阻塞)的监视器锁定的线程的名称;如果此线程没有被阻塞或没有在任何监视器上等待,或者,如果监视器锁定没有由任何线程保持,则返回 null
另请参见:
getLockName()

getStackTrace

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

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

返回:
线程的 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()
返回此线程信息的字符串表示形式。

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

from

public static ThreadInfo from(javax.management.openmbean.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
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

参数:
cd - 表示 ThreadInfoCompositeData
返回:
如果 cd 不为 null,则返回由 cd 表示的 ThreadInfo 对象;否则返回 null
抛出:
IllegalArgumentException - 如果 cd 不表示具有上述属性的 ThreadInfo

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策