概述
软件包
类
使用
树
已过时
索引
帮助
JavaTM 2 Platform
Standard Ed. 6
上一个类
下一个类
框架
无框架
摘要: 嵌套 | 字段 | 构造方法 | 方法
详细信息: 字段 | 构造方法 | 方法
java.lang.management
接口 ThreadMXBean
public interface ThreadMXBean
Java 虚拟机线程系统的管理接口。
Java 虚拟机具有此接口的实现类的单一实例。实现此接口的实例是一个 MXBean,可以通过调用 ManagementFactory.getThreadMXBean() 方法或从平台 MBeanServer 方法获得它。
在 MBeanServer 内唯一标识线程系统的 MXBean 的 ObjectName 是:
java.lang:type=Threading
线程 ID
线程 ID 是一个通过调用线程的 Thread.getId() 方法返回的 long 型正值。线程 ID 在其生存期间是唯一的。线程终止时,该线程 ID 可以被重新使用。
此接口中的某些方法将线程 ID 或线程 ID 数组作为输入参数,并返回每个线程的信息。
线程 CPU 时间
Java 虚拟机实现可能支持测量当前线程的 CPU 时间、测量任何线程的 CPU 时间,或者有可能不测量任何线程的 CPU 时间。
isThreadCpuTimeSupported() 方法可用于确定 Java 虚拟机是否支持测量任何线程的 CPU 时间。isCurrentThreadCpuTimeSupported() 方法可用于确定 Java 虚拟机是否支持测量当前线程的 CPU 时间。支持任何线程 CPU 时间测量的 Java 虚拟机实现也支持当前线程的 CPU 时间测量。
此接口提供的 CPU 时间具有毫微秒精度,但并不具有毫微秒的准确性。
Java 虚拟机可能默认禁用 CPU 时间测量。isThreadCpuTimeEnabled() 和 setThreadCpuTimeEnabled(boolean) 方法可用于测试是否启用 CPU 时间测量,并且可以分别启用/禁用此支持。启用线程 CPU 测量在某些 Java 虚拟机实现中可能开销很大。
线程争用监视
某些 Java 虚拟机可能支持线程争用监视。当启用线程争用监视时,将收集由于同步而受阻塞的线程累积时间和等待通知的线程累积时间,并在 ThreadInfo 对象中返回它们。
isThreadContentionMonitoringSupported() 方法可用于确定 Java 虚拟机是否支持线程争用监视。默认情况下,线程争用监视是禁用的。setThreadContentionMonitoringEnabled(boolean) 方法可用于启用线程争用监视。
同步信息和死锁检测
一些 Java 虚拟机可以支持使用对象监视器和使用可拥有同步器的监视。getThreadInfo(long[], boolean, boolean) 和 dumpAllThreads(boolean, boolean) 方法可以用来获取线程堆栈跟踪和同步信息,这些信息包括在获得线程时被哪一个锁阻塞或者正在等待哪一个锁,以及线程当前拥有哪些锁。
ThreadMXBean 接口提供 findMonitorDeadlockedThreads() 和 findDeadlockedThreads() 方法,这些方法用于在运行的应用程序中查找死锁。
从以下版本开始:
1.5
另请参见:
JMX Specification.,
访问 MXBeans 的方式
方法摘要
ThreadInfo[]
dumpAllThreads(boolean lockedMonitors,
boolean lockedSynchronizers)
返回所有活动线程的线程信息,并带有堆栈跟踪和同步信息。
long[]
findDeadlockedThreads()
查找因为等待获得对象监视器或可拥有同步器而处于死锁状态的线程循环。
long[]
findMonitorDeadlockedThreads()
找到处于死锁状态(等待获取对象监视器)的线程的周期。
long[]
getAllThreadIds()
返回活动线程 ID。
long
getCurrentThreadCpuTime()
返回当前线程的总 CPU 时间(以毫微秒为单位)。
long
getCurrentThreadUserTime()
返回当前线程在用户模式中执行的 CPU 时间(以毫微秒为单位)。
int
getDaemonThreadCount()
返回活动守护线程的当前数目。
int
getPeakThreadCount()
返回自从 Java 虚拟机启动或峰值重置以来峰值活动线程计数。
int
getThreadCount()
返回活动线程的当前数目,包括守护线程和非守护线程。
long
getThreadCpuTime(long id)
返回指定 ID 的线程的总 CPU 时间(以毫微秒为单位)。
ThreadInfo
getThreadInfo(long id)
返回指定 id 的不具有堆栈跟踪的线程的线程信息。
ThreadInfo[]
getThreadInfo(long[] ids)
返回其 ID 在输出数组 ids 中的每个线程的线程信息,这些线程不具有堆栈跟踪。
ThreadInfo[]
getThreadInfo(long[] ids,
boolean lockedMonitors,
boolean lockedSynchronizers)
返回每个线程的线程信息,线程 ID 位于输入数组 ids 中,带有堆栈跟踪和同步信息。
ThreadInfo[]
getThreadInfo(long[] ids,
int maxDepth)
返回其 ID 在输入数组 ids 中的每个线程的线程信息,并带有指定堆栈追踪元素数的堆栈追踪。
ThreadInfo
getThreadInfo(long id,
int maxDepth)
返回指定 id 的线程的线程信息,并带有指定堆栈追踪元素数的堆栈追踪。
long
getThreadUserTime(long id)
返回指定 ID 的线程在用户模式中执行的 CPU 时间(以毫微秒为单位)。
long
getTotalStartedThreadCount()
返回自从 Java 虚拟机启动以来创建和启动的线程总数目。
boolean
isCurrentThreadCpuTimeSupported()
测试 Java 虚拟机是否支持当前线程的 CPU 时间测量。
boolean
isObjectMonitorUsageSupported()
测试 Java 虚拟机是否支持使用对象监视器的监视。
boolean
isSynchronizerUsageSupported()
测试 Java