Module java.management

Class ThreadInfo

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

public class ThreadInfo extends Object
线程信息。 ThreadInfo 包含有关线程的信息,包括:

一般线程信息

  • 线程ID。
  • 线程名称。
  • 线程是否为守护线程

执行信息

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

同步统计信息

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

MXBean 映射

ThreadInfo 被映射为一个 CompositeData,其属性如 from 方法中指定的那样。
自版本:
1.5
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    static ThreadInfo
    返回由给定 CompositeData 表示的 ThreadInfo 对象。
    long
    返回与此 ThreadInfo 关联的线程阻塞以进入或重新进入监视器的总次数。
    long
    返回与此 ThreadInfo 关联的线程阻塞以进入或重新进入监视器的累积耗时(以毫秒为单位),自启用线程争用监视以来。某些Java虚拟机实现可能不支持此功能。
    返回一个 MonitorInfo 对象数组,每个对象代表当前被与此 ThreadInfo 关联的线程锁定的对象监视器。
    返回一个 LockInfo 对象数组,每个对象代表当前被与此 ThreadInfo 关联的线程锁定的 可拥有同步器
    返回与此 ThreadInfo 关联的线程因等待而被阻塞的对象的 LockInfo
    返回与此 ThreadInfo 关联的线程因等待而被阻塞的对象的 字符串表示
    long
    返回与此 ThreadInfo 关联的线程因等待而被阻塞的对象的拥有线程ID。
    返回与此 ThreadInfo 关联的线程因等待而被阻塞的对象的拥有线程名称。
    int
    返回与此 ThreadInfo 关联的线程的 线程优先级
    返回与此 ThreadInfo 关联的线程的堆栈跟踪。
    long
    返回与此 ThreadInfo 关联的线程的ID。
    返回与此 ThreadInfo 关联的线程的名称。
    返回与此 ThreadInfo 关联的线程的状态。
    long
    返回与此 ThreadInfo 关联的线程等待通知的总次数。
    long
    返回与此 ThreadInfo 关联的线程等待通知的累积耗时(以毫秒为单位),自启用线程争用监视以来。某些Java虚拟机实现可能不支持此功能。
    boolean
    检查与此 ThreadInfo 关联的线程是否为 守护线程
    boolean
    检查与此 ThreadInfo 关联的线程是否通过Java本机接口(JNI)执行本机代码。
    boolean
    检查与此 ThreadInfo 关联的线程是否已暂停。
    返回此线程信息的字符串表示。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Method Details

    • 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虚拟机不支持此操作。
      参见:
    • getBlockedCount

      public long getBlockedCount()
      返回与此 ThreadInfo 关联的线程阻塞以进入或重新进入监视器的总次数。即线程处于 BLOCKED 状态的次数。
      返回:
      线程进入 BLOCKED 状态的总次数。
    • getWaitedTime

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

      Java虚拟机可能使用高分辨率计时器来测量时间。当重新启用线程争用监视时,此统计信息将被重置。

      返回:
      线程处于 WAITINGTIMED_WAITING 状态的累积耗时,以毫秒为单位;如果线程争用监视已禁用,则返回 -1
      抛出:
      UnsupportedOperationException - 如果Java虚拟机不支持此操作。
      参见:
    • getWaitedCount

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

      public LockInfo getLockInfo()
      返回与此ThreadInfo关联的线程正在阻塞等待的对象的LockInfo。线程可以因以下原因之一而被阻塞等待:

      如果线程不处于上述任何条件下,则此方法返回null

      返回:
      如果有的话,返回线程正在阻塞等待的对象的LockInfo;否则返回null
      自:
      1.6
    • getLockName

      public String getLockName()
      返回与此ThreadInfo关联的线程正在阻塞等待的对象的字符串表示。此方法等效于调用:
       getLockInfo().toString()
       

      如果此线程未阻塞等待任何对象,或者对象不被任何线程拥有,则此方法将返回null

      返回:
      如果有的话,返回线程正在阻塞的对象的字符串表示;否则返回null
      另请参阅:
    • getLockOwnerId

      public long getLockOwnerId()
      返回与此ThreadInfo关联的线程正在阻塞等待的对象的所有者线程的ID。如果此线程未阻塞等待任何对象,或者对象不被任何线程拥有,则此方法将返回-1
      返回:
      此线程正在阻塞的对象的所有者线程的线程ID;如果此线程未被阻塞,或者对象不被任何线程拥有,则返回-1
      另请参阅:
    • getLockOwnerName

      public String getLockOwnerName()
      返回与此ThreadInfo关联的线程正在阻塞等待的对象的所有者线程的名称。如果此线程未阻塞等待任何对象,或者对象不被任何线程拥有,则此方法将返回null
      返回:
      此线程正在阻塞的对象的所有者线程的名称;如果此线程未被阻塞,或者对象不被任何线程拥有,则返回null
      另请参阅:
    • 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
    • isDaemon

      public boolean isDaemon()
      测试与此ThreadInfo关联的线程是否为守护线程
      返回:
      如果线程是守护线程,则返回true;否则返回false
      自:
      9
      另请参阅:
    • getPriority

      public int getPriority()
      返回与此ThreadInfo关联的线程的线程优先级
      返回:
      与此ThreadInfo关联的线程的优先级。
      自:
      9
    • toString

      public String toString()
      返回此线程信息的字符串表示。此字符串的格式取决于实现。返回的字符串通常包括线程名称线程ID、其状态以及堆栈跟踪(如果有)。
      覆盖:
      toString 在类 Object
      返回:
      此线程信息的字符串表示。
    • from

      public static ThreadInfo from(CompositeData cd)
      返回由给定的CompositeData表示的ThreadInfo对象。 表示版本为NThreadInfoCompositeData必须包含版本≤ N中定义的所有属性,除非另有规定。相同的规则适用于给定CompositeData的复合类型,以及其类型为CompositeType的属性的传递性属性或组件类型

      表示版本为NThreadInfoCompositeData包含"stackTrace"属性和"lockedMonitors"属性,分别表示StackTraceElement数组和MonitorInfo数组,它们的类型都是版本NMonitorInfo的复合类型中的"lockedStackFrame"属性必须表示相同版本NStackTraceElement。否则,此方法将抛出IllegalArgumentException异常。

      ThreadInfo的复合数据的属性及其类型
      属性名称 类型 自版本
      threadId java.lang.Long 5
      threadName java.lang.String 5
      threadState java.lang.String 5
      suspended java.lang.Boolean 5
      inNative java.lang.Boolean 5
      blockedCount java.lang.Long 5
      blockedTime java.lang.Long 5
      waitedCount java.lang.Long 5
      waitedTime java.lang.Long 5
      lockName java.lang.String 5
      lockOwnerId java.lang.Long 5
      lockOwnerName java.lang.String 5
      stackTrace javax.management.openmbean.CompositeData[],每个元素都是表示StackTraceElementCompositeData,如下所述 5
      lockInfo javax.management.openmbean.CompositeData - LockInfo的映射类型,如LockInfo.from(javax.management.openmbean.CompositeData)方法中指定的那样。

      如果给定的CompositeData不包含此属性,则将从lockName属性的值构造LockInfo对象。

      6
      lockedMonitors javax.management.openmbean.CompositeData[],其元素类型是MonitorInfo的映射类型,如MonitorInfo.from方法中指定的那样。

      如果给定的CompositeData不包含此属性,则此属性将设置为空数组。

      6
      lockedSynchronizers javax.management.openmbean.CompositeData[],其元素类型是LockInfo的映射类型,如LockInfo.from(javax.management.openmbean.CompositeData)方法中指定的那样。

      如果给定的CompositeData不包含此属性,则此属性将设置为空数组。

      6
      daemon java.lang.Boolean

      如果给定的CompositeData不包含此属性,则此属性将设置为false

      9
      priority java.lang.Integer

      如果给定的CompositeData不包含此属性,则此属性将设置为Thread.NORM_PRIORITY

      9
      表示StackTraceElementCompositeData必须包含版本≤ N中定义的所有属性,除非另有规定。
      StackTraceElement的复合数据的属性及其类型
      属性名称 类型 自版本
      classLoaderName java.lang.String 9
      moduleName java.lang.String 9
      moduleVersion java.lang.String 9
      className java.lang.String 5
      methodName java.lang.String 5
      fileName java.lang.String 5
      lineNumber java.lang.Integer 5
      nativeMethod java.lang.Boolean 5
      参数:
      cd - 表示ThreadInfoCompositeData
      返回:
      如果cd不为null,则返回由cd表示的ThreadInfo对象;否则返回null
      抛出:
      IllegalArgumentException - 如果给定的cd及其复合类型不包含特定运行时版本的ThreadInfo所定义的所有属性
    • getLockedMonitors

      public MonitorInfo[] getLockedMonitors()
      返回一个MonitorInfo对象数组,每个对象代表与此ThreadInfo关联的线程当前锁定的对象监视器。如果未请求此线程信息的锁定监视器或线程未锁定任何监视器,则此方法将返回一个长度为零的数组。
      返回:
      一个MonitorInfo对象数组,表示线程锁定的对象监视器。
      自版本:
      1.6
    • getLockedSynchronizers

      public LockInfo[] getLockedSynchronizers()
      返回一个LockInfo对象数组,每个对象代表与此ThreadInfo关联的线程当前锁定的可拥有同步器。如果未请求此线程信息的锁定同步器或线程未锁定任何同步器,则此方法将返回一个长度为零的数组。
      返回:
      一个LockInfo对象数组,表示线程锁定的可拥有同步器。
      自版本:
      1.6