java.lang.Object
java.lang.management.ThreadInfo
线程信息。
ThreadInfo 包含有关线程的信息,包括:
一般线程信息
- 线程 ID。
- 线程的名称。
- 线程是否是守护线程
执行信息
- 线程状态。
- 由于以下原因线程被阻塞的对象:
- 等待进入同步块/方法,或
- 等待在
Object.wait方法中得到通知,或者 - 由于
LockSupport.park电话而停车。
- 拥有线程被阻塞对象的线程的ID。
- 线程的堆栈跟踪。
- 线程锁定的对象监视器列表。
- 被线程锁定的 可拥有的同步器 列表。
- 线程优先级
同步统计
- 线程为同步而阻塞或等待通知的次数。
- 自启用
thread contention monitoring以来线程为同步而阻塞或等待通知的累计经过时间。某些 Java 虚拟机实现可能不支持这一点。ThreadMXBean.isThreadContentionMonitoringSupported()方法可用于确定 Java 虚拟机是否支持此功能。
这个线程信息类被设计用于系统的监控,而不是用于同步控制。
MXBean 映射
ThreadInfo 映射到具有 from 方法中指定的属性的 CompositeData 。
- 自从:
- 1.5
- 参见:
-
方法总结
修饰符和类型方法描述static ThreadInfofrom(CompositeData cd) 返回由给定的CompositeData表示的ThreadInfo对象。long返回与此ThreadInfo关联的线程阻塞进入或重新进入监视器的总次数。long返回自启用线程争用监视以来与此ThreadInfo关联的线程已阻塞以进入或重新进入监视器的近似累积运行时间(以毫秒为单位)。返回一个MonitorInfo对象数组,每个对象代表一个当前被与此ThreadInfo关联的线程锁定的对象监视器。LockInfo[]返回对象的LockInfo,与此ThreadInfo关联的线程被阻塞等待。返回对象的string representation,与此ThreadInfo关联的线程被阻塞等待。long返回拥有对象的线程的 ID,与此ThreadInfo关联的线程被阻止等待。返回拥有对象的线程的名称,与此ThreadInfo关联的线程被阻止等待。int返回与此ThreadInfo关联的线程的 线程优先级。返回与此ThreadInfo关联的线程的堆栈跟踪。long返回与此ThreadInfo关联的线程的 ID。返回与此ThreadInfo关联的线程的名称。返回与此ThreadInfo关联的线程的状态。long返回与此ThreadInfo关联的线程等待通知的总次数。long返回与此ThreadInfo关联的线程自启用线程争用监视以来等待通知的近似累积运行时间(以毫秒为单位)。booleanisDaemon()测试与此ThreadInfo关联的线程是否为 守护线程。boolean测试与此ThreadInfo关联的线程是否正在通过 Java 本机接口 (JNI) 执行本机代码。boolean测试与此ThreadInfo关联的线程是否已挂起。toString()返回此线程信息的字符串表示形式。
-
方法详情
-
getThreadId
public long getThreadId()返回与此ThreadInfo关联的线程的 ID。- 返回:
- 关联线程的 ID。
-
getThreadName
返回与此ThreadInfo关联的线程的名称。- 返回:
- 关联线程的名称。
-
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 虚拟机可以使用高分辨率计时器来测量时间。当重新启用线程争用监视时,此统计信息会重置。
- 返回:
-
线程处于
WAITING或TIMED_WAITING状态的近似累积运行时间(以毫秒为单位);-1如果禁用线程争用监视。 - 抛出:
UnsupportedOperationException- 如果 Java 虚拟机不支持此操作。- 参见:
-
getWaitedCount
public long getWaitedCount()- 返回:
-
线程处于
WAITING或TIMED_WAITING状态的总次数。
-
getLockInfo
返回对象的LockInfo,与此ThreadInfo关联的线程被阻塞等待。线程可能会因等待以下情况之一而被阻塞:- 为进入或重新进入同步块/方法而获取的对象监视器。
线程处于BLOCKED状态,等待进入synchronized语句或方法。 - 由另一个线程通知的对象监视器。
由于调用了Object.wait方法,线程处于WAITING或TIMED_WAITING状态。 - 负责线程停放的同步对象。
由于调用了LockSupport.park方法,线程处于WAITING或TIMED_WAITING状态。同步对象是从LockSupport.getBlocker方法返回的对象。通常它是 可拥有的同步器 或Condition。
如果线程不在上述任何条件下,此方法返回
null。- 返回:
LockInfo线程被阻塞等待的对象的LockInfo;null否则。- 自从:
- 1.6
- 为进入或重新进入同步块/方法而获取的对象监视器。
-
getLockName
返回对象的string representation,与此ThreadInfo关联的线程被阻塞等待。此方法等效于调用:getLockInfo().toString()
如果此线程未阻塞等待任何对象,或者如果该对象不属于任何线程,则此方法将返回
null。- 返回:
-
线程被阻塞的对象的字符串表示形式(如果有);
null否则。 - 参见:
-
getLockOwnerId
public long getLockOwnerId()返回拥有对象的线程的 ID,与此ThreadInfo关联的线程被阻止等待。如果此线程未被阻塞等待任何对象,或者如果该对象不属于任何线程,则此方法将返回-1。- 返回:
-
此线程被阻塞的对象的所有者线程的线程 ID;
-1如果此线程未被阻塞或对象不属于任何线程。 - 参见:
-
getLockOwnerName
返回拥有对象的线程的名称,与此ThreadInfo关联的线程被阻止等待。如果此线程未阻塞等待任何对象,或者如果该对象不属于任何线程,则此方法将返回null。- 返回:
-
拥有此线程被阻塞的对象的线程的名称;
null如果此线程未被阻塞或对象不属于任何线程。 - 参见:
-
getStackTrace
返回与此ThreadInfo关联的线程的堆栈跟踪。如果没有为此线程信息请求堆栈跟踪,则此方法将返回一个零长度数组。如果返回的数组长度不为零,则数组的第一个元素表示堆栈的顶部,这是序列中最近的方法调用。数组的最后一个元素代表堆栈的底部,这是序列中最近最少的方法调用。在某些情况下,某些 Java 虚拟机可能会从堆栈跟踪中省略一个或多个堆栈帧。在极端情况下,没有关于与此
ThreadInfo关联的线程的堆栈跟踪信息的虚拟机被允许从此方法返回零长度数组。- 返回:
-
线程的
StackTraceElement对象数组。
-
isSuspended
public boolean isSuspended()- 返回:
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
-
from
返回由给定的CompositeData表示的ThreadInfo对象。CompositeData表示版本 N 的ThreadInfo必须包含版本 ≤ N 中定义的所有属性,除非另有说明。相同的规则将给定CompositeData的复合类型和可传递地应用于 type 或 组件类型 为CompositeType的属性。代表N版本的
ThreadInfo的CompositeData包含"stackTrace"属性和"lockedMonitors"属性分别代表StackTraceElement数组和MonitorInfo数组,它们的类型是N版本。MonitorInfo的复合类型中的"lockedStackFrame"属性必须表示相同版本 N 的StackTraceElement。否则,此方法将抛出IllegalArgumentException。
一个属性名称 Type Since 线程ID java.lang.Long5 线程名称 java.lang.String5 线程状态 java.lang.String5 暂停 java.lang.Boolean5 天生的 java.lang.Boolean5 阻塞计数 java.lang.Long5 阻塞时间 java.lang.Long5 waitedCount java.lang.Long5 等待时间 java.lang.Long5 锁名 java.lang.String5 lockOwnerId java.lang.Long5 锁定所有者名称 java.lang.String5 堆栈跟踪 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 中定义的所有属性,除非另有说明。属性名称 Type Since classLoaderName java.lang.String9 模块名称 java.lang.String9 模块版本 java.lang.String9 类名称 java.lang.String5 methodName java.lang.String5 文件名 java.lang.String5 电话号码 java.lang.Integer5 native方法 java.lang.Boolean5 - 参数:
cd-CompositeData代表一个ThreadInfo- 返回:
-
如果
cd不是null,则由cd表示的ThreadInfo对象;null否则。 - 抛出:
IllegalArgumentException- 如果给定的cd及其复合类型不包含为特定运行时版本的ThreadInfo定义的所有 属性。
-
getLockedMonitors
返回一个MonitorInfo对象数组,每个对象代表一个当前被与此ThreadInfo关联的线程锁定的对象监视器。如果没有为此线程信息请求锁定的监视器或线程没有锁定监视器,则此方法将返回一个零长度数组。- 返回:
MonitorInfo对象数组,表示线程锁定的对象监视器。- 自从:
- 1.6
-
getLockedSynchronizers
返回一个LockInfo对象数组,每个对象代表一个 可拥有的同步器 当前被与此ThreadInfo关联的线程锁定。如果没有为此线程信息请求锁定的同步器,或者线程没有锁定同步器,则此方法将返回一个零长度数组。- 返回:
-
一个
LockInfo对象数组,表示线程锁定的可拥有同步器。 - 自从:
- 1.6
-