类 ThreadInfo

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

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

一般线程信息

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

执行信息

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

同步统计

这个线程信息类被设计用于系统的监控,而不是用于同步控制。

MXBean 映射

ThreadInfo 映射到具有 from 方法中指定的属性的 CompositeData
自从:
1.5
参见:
  • 方法详情

    • 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 关联的线程自启用线程争用监视以来等待通知的近似累积运行时间(以毫秒为单位)。即自启用线程争用监视以来线程一直处于WAITING TIMED_WAITING 状态的总累计时间。如果禁用线程争用监视,则此方法返回 -1

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

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

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

      public LockInfo  getLockInfo()
      返回对象的 LockInfo,与此 ThreadInfo 关联的线程被阻塞等待。线程可能会因等待以下情况之一而被阻塞:

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

      返回:
      LockInfo 线程被阻塞等待的对象的 LockInfonull否则。
      自从:
      1.6
    • getLockName

      public String  getLockName()
      返回对象的 string representation ,与此 ThreadInfo 关联的线程被阻塞等待。此方法等效于调用:
       getLockInfo().toString()
       

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

      返回:
      线程被阻塞的对象的字符串表示形式(如果有); null否则。
      参见:
    • getLockOwnerId

      public long getLockOwnerId()
      返回拥有对象的线程的 ID,与此 ThreadInfo 关联的线程被阻止等待。如果此线程未被阻塞等待任何对象,或者如果该对象不属于任何线程,则此方法将返回 -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 、它的 state堆栈跟踪 (如果有)。
      重写:
      toString 在类 Object
      返回:
      此线程信息的字符串表示形式。
    • from

      public static ThreadInfo  from(CompositeData  cd)
      返回由给定的 CompositeData 表示的 ThreadInfo 对象。 CompositeData 表示版本 NThreadInfo 必须包含版本 ≤ N 中定义的所有属性,除非另有说明。相同的规则将给定 CompositeData 的复合类型和可传递地应用于 type组件类型CompositeType 的属性。

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

      ThreadInfo 复合数据的属性及其类型
      属性名称 Type Since
      线程ID java.lang.Long 5
      线程名称 java.lang.String 5
      线程状态 java.lang.String 5
      暂停 java.lang.Boolean 5
      天生的 java.lang.Boolean 5
      阻塞计数 java.lang.Long 5
      阻塞时间 java.lang.Long 5
      waitedCount java.lang.Long 5
      等待时间 java.lang.Long 5
      锁名 java.lang.String 5
      lockOwnerId java.lang.Long 5
      锁定所有者名称 java.lang.String 5
      堆栈跟踪 javax.management.openmbean.CompositeData[] ,每个元素都是一个 CompositeData 代表 StackTraceElement 作为指定 以下 5
      锁定信息 javax.management.openmbean.CompositeData - 在 LockInfo.from(javax.management.openmbean.CompositeData) 方法中指定的 LockInfo 的映射类型。

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

      6
      锁定监视器 javax.management.openmbean.CompositeData[] 其元素类型是 MonitorInfo.from 方法中指定的 MonitorInfo 的映射类型。

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

      6
      锁定同步器 javax.management.openmbean.CompositeData[],其元素类型是 LockInfo.from(javax.management.openmbean.CompositeData) 方法中指定的 LockInfo 的映射类型。

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

      6
      守护进程 java.lang.Boolean

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

      9
      优先事项 java.lang.Integer

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

      9
      一个CompositeData代表StackTraceElement 版本 N 必须包含版本 ≤ N 中定义的所有属性,除非另有说明。
      StackTraceElement 的复合数据的属性及其类型
      属性名称 Type Since
      classLoaderName java.lang.String 9
      模块名称 java.lang.String 9
      模块版本 java.lang.String 9
      类名称 java.lang.String 5
      methodName java.lang.String 5
      文件名 java.lang.String 5
      电话号码 java.lang.Integer 5
      native方法 java.lang.Boolean 5
      参数:
      cd - CompositeData 代表一个 ThreadInfo
      返回:
      如果 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