返回介绍

java.lang.management 类 ThreadInfo

发布于 2019-10-04 09:51:14 字数 12655 浏览 1237 评论 0 收藏 0

java.lang.Object
  └java.lang.management.ThreadInfo

public class ThreadInfo
extends Object
 

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

常规线程信息

  • 线程 ID。
  • 线程名称。

执行信息

  • 线程状态。
  • 线程在其上阻塞的对象等待进入同步块或等待在 Object.wait 调用中被通知。
  • 拥有阻塞线程对象的线程的 ID。
  • 线程的堆栈跟踪。

同步统计数据

  • 由于同步或等待通知而阻塞线程的次数。
  • 自从启动线程争用监视以来,由于同步或等待通知而阻塞线程的累积时间。某些 Java 虚拟机实现可能不支持此功能。 ThreadMXBean.isThreadContentionMonitoringSupported() 方法可用于确定 Java 虚拟机是否支持此功能。

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

MXBean 映射

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

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

方法摘要
staticThreadInfofrom(javax.management.openmbean.CompositeDatacd)

返回由给定 CompositeData 表示的 ThreadInfo 对象。

longgetBlockedCount()

返回与此 ThreadInfo 相关的被阻塞的线程进入或重新进入监视器的总次数。

longgetBlockedTime()

返回自从启用线程争用监视以来,与此 ThreadInfo 相关的线程被阻塞进入或重新进入监视器的近似累积时间(以毫秒为单位)。

StringgetLockName()

返回监视器锁定的字符串表示形式,与此 ThreadInfo 相关的线程被锁定进入或正等待通过 Object.wait 方法得到通知。

longgetLockOwnerId()

返回线程的 ID,此线程保持对象的监视器锁定,该对象上与此 ThreadInfo 相关的线程被阻塞。

StringgetLockOwnerName()

返回线程的名称,此线程保持对象的监视器锁定,该对象上与此 ThreadInfo 相关的线程被阻塞。

StackTraceElement[]getStackTrace()

返回与此 ThreadInfo 相关的线程的堆栈跟踪。

longgetThreadId()

返回与此 ThreadInfo 相关的线程的 ID。

StringgetThreadName()

返回与此 ThreadInfo 相关的线程的名称。

Thread.StategetThreadState()

返回与此 ThreadInfo 相关的线程的状态。

longgetWaitedCount()

返回与此 ThreadInfo 相关的线程等待通知的总次数。

longgetWaitedTime()

返回自从启用线程争用监视以来,与此 ThreadInfo 相关的线程等待通知的近似累积时间(以毫秒为单位)。

booleanisInNative()

测试与此 ThreadInfo 相关的线程是否通过 Java 本机接口 (JNI) 执行本机代码。

booleanisSuspended()

测试与此 ThreadInfo 相关的线程是否被挂起。

StringtoString()

返回此线程信息的字符串表示形式。

从类 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.CompositeDatacd)
返回由给定 CompositeData 表示的 ThreadInfo 对象。给定的 CompositeData 必须包含以下属性:
属性名称类型
threadIdjava.lang.Long
threadNamejava.lang.String
threadStatejava.lang.String
suspendedjava.lang.Boolean
inNativejava.lang.Boolean
blockedCountjava.lang.Long
blockedTimejava.lang.Long
waitedCountjava.lang.Long
waitedTimejava.lang.Long
lockNamejava.lang.String
lockOwnerIdjava.lang.Long
lockOwnerNamejava.lang.String
stackTracejavax.management.openmbean.CompositeData[]

每个元素都是表示 StackTraceElement 的 CompositeData ,包含以下属性:

属性名称类型
classNamejava.lang.String
methodNamejava.lang.String
fileNamejava.lang.String
lineNumberjava.lang.Integer
nativeMethodjava.lang.Boolean
参数:
cd - 表示 ThreadInfoCompositeData
返回:
如果 cd 不为 null ,则返回由 cd 表示的 ThreadInfo 对象;否则返回 null
抛出:
IllegalArgumentException - 如果 cd 不表示具有上述属性的 ThreadInfo

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文