-
- All Superinterfaces:
-
PlatformManagedObject
- All Known Subinterfaces:
-
ThreadMXBean
public interface ThreadMXBean extends PlatformManagedObject
Java虚拟机线程系统的管理界面。Java虚拟机具有此接口的实现类的单个实例。 这种情况下实现此接口是MXBean ,可以通过调用能够得到
ManagementFactory.getThreadMXBean()
方法或从platform MBeanServer
方法。用于唯一标识MBeanServer中线程系统的MXBean的
ObjectName
是:java.lang:type=Threading
PlatformManagedObject.getObjectName()
方法获得。线程ID
线程ID是通过为线程调用Thread.getId()
方法返回的正长值。 线程ID在其一生中是唯一的。 当线程被终止时,该线程ID可以被重用。该接口中的一些方法采用线程ID或线程ID数组作为输入参数,并返回每线程信息。
线程CPU时间
Java虚拟机实现可以支持测量当前线程的CPU时间,对于任何线程,或者无线程。可以使用
isThreadCpuTimeSupported()
方法来确定Java虚拟机是否支持测量任何线程的CPU时间。 可以使用isCurrentThreadCpuTimeSupported()
方法来确定Java虚拟机是否支持测量当前线程的CPU时间。 支持任何线程的CPU时间测量的Java虚拟机实现也将支持当前线程。该接口提供的CPU时间具有纳秒精度,但不一定是纳秒精度。
默认情况下,Java虚拟机可能会禁用CPU时间测量。
isThreadCpuTimeEnabled()
和setThreadCpuTimeEnabled(boolean)
方法可用于测试是否启用CPU时间测量,并分别启用/禁用此支持。 在一些Java虚拟机实现中启用线程CPU测量可能是昂贵的。线程争用监控
一些Java虚拟机可能支持线程争用监控。 当线程争用监控启用时,线程已阻止同步或等待通知的累计经过时间将被收集并返回给ThreadInfo
对象。可以使用
isThreadContentionMonitoringSupported()
方法来确定Java虚拟机是否支持线程争用监控。 默认情况下禁用线程争用监控。setThreadContentionMonitoringEnabled(boolean)
方法可用于启用线程争用监控。同步信息和死锁检测
一些Java虚拟机可能支持监视object monitor usage和ownable synchronizer usage 。 的getThreadInfo(long[], boolean, boolean)
种dumpAllThreads(boolean, boolean)
方法可用于获得包括所述线程堆栈跟踪和同步信息lock一个线程被阻塞以获取或等待上并锁定线程当前拥有。ThreadMXBean
接口提供了findMonitorDeadlockedThreads()
和findDeadlockedThreads()
方法来查找正在运行的应用程序中的死锁。- 从以下版本开始:
- 1.5
- 另请参见:
-
ManagementFactory.getPlatformMXBeans(Class)
, JMX Specification. , Ways to Access MXBeans
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 ThreadInfo[]
dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
使用堆栈跟踪和同步信息返回所有实时线程的线程信息。long[]
findDeadlockedThreads()
查找处于死锁等待获取对象监视器的线程的周期,或 ownable synchronizers 。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虚拟机是否支持对 ownable synchronizer的使用情况进行监控。boolean
isThreadContentionMonitoringEnabled()
测试是否启用线程争用监控。boolean
isThreadContentionMonitoringSupported()
测试Java虚拟机是否支持线程争用监控。boolean
isThreadCpuTimeEnabled()
测试线程CPU时间测量是否启用。boolean
isThreadCpuTimeSupported()
测试Java虚拟机实现是否支持任何线程的CPU时间测量。void
resetPeakThreadCount()
将峰值线程计数重置为当前线程数。void
setThreadContentionMonitoringEnabled(boolean enable)
启用或禁用线程争用监控。void
setThreadCpuTimeEnabled(boolean enable)
启用或禁用线程CPU时间测量。-
Methods inherited from interface java.lang.management.PlatformManagedObject
getObjectName
-
-
-
-
方法详细信息
-
getThreadCount
int getThreadCount()
返回当前线程数,包括守护进程线程和非守护程序线程数。- 结果
- 当前线程数。
-
getPeakThreadCount
int getPeakThreadCount()
返回Java虚拟机启动或峰值复位后的峰值活动线程数。- 结果
- 峰值线程数。
-
getTotalStartedThreadCount
long getTotalStartedThreadCount()
返回自Java虚拟机启动以来创建并启动的线程总数。- 结果
- 总线程数已启动。
-
getDaemonThreadCount
int getDaemonThreadCount()
返回当前的守护进程线程数。- 结果
- 当前的守护进程线程数。
-
getAllThreadIds
long[] getAllThreadIds()
返回所有活动线程ID。 返回的数组中包含的某些线程可能会在该方法返回时被终止。- 结果
-
一个
long
的数组,每个都是一个线程ID。 - 异常
-
SecurityException
- 如果安全管理器存在并且调用者没有ManagementPermission(“监视器”)。
-
getThreadInfo
ThreadInfo getThreadInfo(long id)
返回没有堆栈跟踪的指定的id
的线程的线程信息。 这个方法相当于调用:getThreadInfo(id, 0);
此方法返回一个
ThreadInfo
对象,该对象表示指定ID的线程的线程信息。 返回的ThreadInfo
对象中的堆栈跟踪,锁定的监视器和锁定的同步器将为空。 如果给定ID的线程不存在或不存在,则此方法将返回null
。 如果一个线程已经启动并且尚未死亡,那么线程是活着的。MBeanServer访问 :
的映射类型ThreadInfo
是CompositeData
与作为指定属性ThreadInfo.from
方法。- 参数
-
id
- 线程的线程ID。 必须是积极的。 - 结果
-
一个
ThreadInfo
对象,给定ID的线程没有堆栈跟踪,没有锁定的监视器,没有同步器信息;null
如果给定ID的线程不存在或不存在。 - 异常
-
IllegalArgumentException
- 如果是id <= 0
。 -
SecurityException
- 如果安全管理器存在并且调用者没有ManagementPermission(“监视器”)。
-
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids)
返回其ID为输入数组ids
中的每个线程的线程信息,不带堆栈跟踪。 这个方法相当于调用:getThreadInfo
(ids, 0);此方法返回
ThreadInfo
对象的数组。 每个ThreadInfo
对象中的堆栈跟踪,锁定的监视器和锁定的同步器将为空。 如果给定ID的线程不存在或不存在,则返回的数组中的相应元素将包含null
。 如果一个线程已经启动并且尚未死亡,那么线程是活着的。MBeanServer访问 :
的映射类型ThreadInfo
是CompositeData
与作为指定属性ThreadInfo.from
方法。- 参数
-
ids
- 一个线程ID数组。 - 结果
-
一个
ThreadInfo
对象的数组,每个对象包含一个线程的信息,该线程的ID位于ID的输入数组的相应元素中,没有堆栈跟踪,没有锁定的监视器,没有同步器信息。 - 异常
-
IllegalArgumentException
- 如果输入阵列中的任何元素ids
为<= 0
。 -
SecurityException
- 如果安全管理器存在,并且调用者没有ManagementPermission(“监视器”)。
-
getThreadInfo
ThreadInfo getThreadInfo(long id, int maxDepth)
返回指定的id
的线程的线程信息,堆栈跟踪指定数量的堆栈跟踪元素。maxDepth
参数指示要从堆栈跟踪中检索的最大数量StackTraceElement
。 如果maxDepth == Integer.MAX_VALUE
,线程的整个堆栈跟踪将被转储。 如果是maxDepth == 0
,那么线程的堆栈跟踪不会被转储。 该方法不能获得线程锁定的监视器和锁定的同步器。当Java虚拟机具有关于一个线程或没有堆栈跟踪信息
maxDepth == 0
,在堆栈跟踪ThreadInfo
对象将是空数组StackTraceElement
。如果给定ID的线程不存在或不存在,则此方法将返回
null
。 如果一个线程已经启动并且尚未死亡,那么线程是活着的。MBeanServer访问 :
ThreadInfo
的映射类型为CompositeData
,其属性在ThreadInfo.from
方法中指定。- 参数
-
id
- 线程的线程ID。 必须是积极的。 -
maxDepth
- 要转储的堆栈跟踪中的最大条目数。 可以使用Integer.MAX_VALUE
请求整个堆栈进行转储。 - 结果
-
一个
ThreadInfo
的给定ID的线程,没有锁定的监视器和同步器信息。null
如果给定ID的线程不存在或不存在。 - 异常
-
IllegalArgumentException
- 如果是id <= 0
。 -
IllegalArgumentException
- 如果是maxDepth is negative
。 -
SecurityException
- 如果安全管理器存在并且调用者没有ManagementPermission(“监视器”)。
-
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids, int maxDepth)
返回ID为输入数组ids
每个线程的线程信息,堆栈跟踪指定数量的堆栈跟踪元素。maxDepth
参数指示要从堆栈跟踪中检索的最大数量StackTraceElement
。 如果是maxDepth == Integer.MAX_VALUE
,线程的整个堆栈跟踪将被转储。 如果是maxDepth == 0
,线程的堆栈跟踪不会被转储。 该方法不能获得锁定的监视器和锁定的线程的同步器。当Java虚拟机具有关于一个线程或没有堆栈跟踪信息
maxDepth == 0
,在堆栈跟踪ThreadInfo
对象将是空数组StackTraceElement
。该方法返回一个
ThreadInfo
对象的数组,每个对象是与ids
数组相同索引的线程的线程信息。 如果给定ID的线程不存在或不存在,null
在返回的数组的相应元素中设置null
。 如果一个线程已经启动并且尚未死亡,那么线程是活着的。MBeanServer访问 :
的映射类型ThreadInfo
是CompositeData
与作为指定属性ThreadInfo.from
方法。- 参数
-
ids
- 一个线程ID数组 -
maxDepth
- 要转储的堆栈跟踪中的最大条目数。 可以使用Integer.MAX_VALUE
请求整个堆栈被转储。 - 结果
-
一个
ThreadInfo
对象的数组,每个对象包含一个线程的信息,该线程的ID位于ID的输入数组的相应元素中,没有锁定的监视器和同步器信息。 - 异常
-
IllegalArgumentException
- 如果是maxDepth is negative
。 -
IllegalArgumentException
- 如果输入数组中的任何元素ids
为<= 0
。 -
SecurityException
- 如果安全管理器存在并且调用者没有ManagementPermission(“监视器”)。
-
isThreadContentionMonitoringSupported
boolean isThreadContentionMonitoringSupported()
测试Java虚拟机是否支持线程争用监控。- 结果
-
true
如果Java虚拟机支持线程争用监控; 否则为false
。
-
isThreadContentionMonitoringEnabled
boolean isThreadContentionMonitoringEnabled()
测试是否启用线程争用监控。- 结果
-
true
如果启用线程争用监控; 否则为false
。 - 异常
-
UnsupportedOperationException
- 如果Java虚拟机不支持线程争用监控。 - 另请参见:
-
isThreadContentionMonitoringSupported()
-
setThreadContentionMonitoringEnabled
void setThreadContentionMonitoringEnabled(boolean enable)
启用或禁用线程争用监控。 默认情况下,线程争用监控被禁用。- 参数
-
enable
-true
启用;false
禁用。 - 异常
-
UnsupportedOperationException
- 如果Java虚拟机不支持线程争用监控。 -
SecurityException
- 如果安全管理器存在并且调用者没有ManagementPermission(“控制”)。 - 另请参见:
-
isThreadContentionMonitoringSupported()
-
getCurrentThreadCpuTime
long getCurrentThreadCpuTime()
以纳秒为单位返回当前线程的总CPU时间。 返回的值为纳秒精度,但不一定是纳秒精度。 如果实现区分用户模式时间和系统模式时间,则返回的CPU时间是当前线程在用户模式或系统模式下执行的时间量。这是一种方便本地管理使用的方法,相当于调用:
getThreadCpuTime
(Thread.currentThread().getId());- 结果
-
如果启用了CPU时间测量,则当前线程的总CPU时间;
否则为
-1
。 - 异常
-
UnsupportedOperationException
- 如果Java虚拟机不支持当前线程的CPU时间测量。 - 另请参见:
-
getCurrentThreadUserTime()
,isCurrentThreadCpuTimeSupported()
,isThreadCpuTimeEnabled()
,setThreadCpuTimeEnabled(boolean)
-
getCurrentThreadUserTime
long getCurrentThreadUserTime()
返回当前线程以纳秒为单位在用户模式下执行的CPU时间。 返回的值为纳秒精度,但不一定是纳秒精度。这是一种方便本地管理使用的方法,相当于调用:
getThreadUserTime
(Thread.currentThread().getId());- 结果
-
如果启用了CPU时间测量,则当前线程的用户级CPU时间;
-1
否则。 - 异常
-
UnsupportedOperationException
- 如果Java虚拟机不支持当前线程的CPU时间测量。 - 另请参见:
-
getCurrentThreadCpuTime()
,isCurrentThreadCpuTimeSupported()
,isThreadCpuTimeEnabled()
,setThreadCpuTimeEnabled(boolean)
-
getThreadCpuTime
long getThreadCpuTime(long id)
以纳秒为单位返回指定ID的线程的总CPU时间。 返回的值为纳秒精度,但不一定是纳秒精度。 如果实现区分用户模式时间和系统模式时间,则返回的CPU时间是线程在用户模式或系统模式下执行的时间量。如果指定ID的线程不存在或不存在,则此方法返回
-1
。 如果禁用CPU时间测量,此方法返回-1
。 如果一个线程已经启动并且尚未死亡,那么线程是活着的。如果在线程启动后启用CPU时间测量,则Java虚拟机实现可以选择任何时间,并将能力启用的时间包括在CPU时间测量开始的时间。
- 参数
-
id
- 线程的线程ID - 结果
-
指定ID的线程的线程的总CPU时间存在,线程存活,CPU时间测量被使能;
否则为
-1
。 - 异常
-
IllegalArgumentException
- 如果是id <= 0
。 -
UnsupportedOperationException
- 如果Java虚拟机不支持其他线程的CPU时间测量。 - 另请参见:
-
getThreadUserTime(long)
,isThreadCpuTimeSupported()
,isThreadCpuTimeEnabled()
,setThreadCpuTimeEnabled(boolean)
-
getThreadUserTime
long getThreadUserTime(long id)
返回指定ID的线程在用户模式下以纳秒为单位的CPU时间。 返回的值为纳秒精度,但不一定是纳秒精度。如果指定ID的线程不存在或不存在,则此方法返回
-1
。 如果禁用CPU时间测量,此方法返回-1
。 如果一个线程已经启动并且尚未死亡,那么线程是活着的。如果在线程启动后启用CPU时间测量,则Java虚拟机实现可以选择任何时间,并将能力启用的时间包括在CPU时间测量开始的时间。
- 参数
-
id
- 线程的线程ID - 结果
-
用户级CPU时间为指定ID的线程,如果指定的线程存在,线程处于活动状态,并且CPU时间测量被使能;
否则为
-1
。 - 异常
-
IllegalArgumentException
- 如果是id <= 0
。 -
UnsupportedOperationException
- 如果Java虚拟机不支持其他线程的CPU时间测量。 - 另请参见:
-
getThreadCpuTime(long)
,isThreadCpuTimeSupported()
,isThreadCpuTimeEnabled()
,setThreadCpuTimeEnabled(boolean)
-
isThreadCpuTimeSupported
boolean isThreadCpuTimeSupported()
测试Java虚拟机实现是否支持任何线程的CPU时间测量。 支持任何线程的CPU时间测量的Java虚拟机实现也将支持当前线程的CPU时间测量。- 结果
-
true
如果Java虚拟机支持任何线程的CPU时间测量; 否则为false
。
-
isCurrentThreadCpuTimeSupported
boolean isCurrentThreadCpuTimeSupported()
测试Java虚拟机是否支持当前线程的CPU时间测量。 该方法返回true
如果isThreadCpuTimeSupported()
回报true
。- 结果
-
true
如果Java虚拟机支持当前线程的CPU时间测量; 否则为false
。
-
isThreadCpuTimeEnabled
boolean isThreadCpuTimeEnabled()
测试线程CPU时间测量是否启用。- 结果
-
true
如果线程CPU时间测量被使能; 否则为false
。 - 异常
-
UnsupportedOperationException
- 如果Java虚拟机不支持其他线程或当前线程的CPU时间测量。 - 另请参见:
-
isThreadCpuTimeSupported()
,isCurrentThreadCpuTimeSupported()
-
setThreadCpuTimeEnabled
void setThreadCpuTimeEnabled(boolean enable)
启用或禁用线程CPU时间测量。 默认值取决于平台。- 参数
-
enable
-true
启用;false
禁用。 - 异常
-
UnsupportedOperationException
- 如果Java虚拟机不支持任何线程或当前线程的CPU时间测量。 -
SecurityException
- 如果安全管理器存在且调用者没有ManagementPermission(“控制”)。 - 另请参见:
-
isThreadCpuTimeSupported()
,isCurrentThreadCpuTimeSupported()
-
findMonitorDeadlockedThreads
long[] findMonitorDeadlockedThreads()
查找处于死锁等待获取对象监视器的线程的循环。 也就是说,在Object.wait
调用之后阻止等待进入同步块或等待重新进入同步块的线程,其中每个线程拥有一个监视器,同时尝试获取另一个线程在一个周期中已经持有的另一个监视器。更正式地,如果线程是“正在等待拥有的对象监视器”的关系中的循环的一部分,则线程是监视器死锁 。 在最简单的情况下,线程A被阻塞等待线程B拥有的监视器,并且线程B被阻塞等待线程A拥有的监视器。
此方法专门用于故障排除,但不用于同步控制。 这可能是一个昂贵的操作。
此方法发现只涉及对象监视器的死锁。 要查找涉及对象监视器和ownable synchronizers的死锁,应使用
findDeadlockedThreads
方法。- 结果
-
监视死锁的线程的数组(如果有的话);
否则为
null
。 - 异常
-
SecurityException
- 如果安全管理器存在且呼叫者没有ManagementPermission(“监视器”)。 - 另请参见:
-
findDeadlockedThreads()
-
resetPeakThreadCount
void resetPeakThreadCount()
将峰值线程计数重置为当前线程数。- 异常
-
SecurityException
- 如果安全管理器存在并且调用者没有ManagementPermission(“控制”)。 - 另请参见:
-
getPeakThreadCount()
,getThreadCount()
-
findDeadlockedThreads
long[] findDeadlockedThreads()
查找处于死锁等待获取对象监视器的线程的周期,或ownable synchronizers 。 线程就被死锁在一个循环,等待这两种类型的锁,如果每个线程拥有一个锁,同时试图获取已经由周期中的另一线程持有另一把锁。此方法专门用于故障排除,但不用于同步控制。 这可能是一个昂贵的操作。
- 结果
-
死锁的线程的数组,等待对象监视器或拥有的同步器(如果有的话);
否则为
null
。 - 异常
-
SecurityException
- 如果安全管理器存在并且调用者没有ManagementPermission(“监视器”)。 -
UnsupportedOperationException
- 如果Java虚拟机不支持监视可用的同步器使用情况。 - 从以下版本开始:
- 1.6
- 另请参见:
-
isSynchronizerUsageSupported()
,findMonitorDeadlockedThreads()
-
isObjectMonitorUsageSupported
boolean isObjectMonitorUsageSupported()
测试Java虚拟机是否支持监视对象监视器的使用情况。- 结果
-
true
如果Java虚拟机支持监视对象监视器的使用情况; 否则为false
。 - 从以下版本开始:
- 1.6
- 另请参见:
-
dumpAllThreads(boolean, boolean)
-
isSynchronizerUsageSupported
boolean isSynchronizerUsageSupported()
测试Java虚拟机是否支持 ownable synchronizer使用情况的监控。- 结果
-
true
如果Java虚拟机支持监视自己的同步器使用情况; 否则为false
。 - 从以下版本开始:
- 1.6
- 另请参见:
-
dumpAllThreads(boolean, boolean)
-
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)
返回其ID为输入数组ids
每个线程的线程信息,具有堆栈跟踪和同步信息。该方法获取每个线程的线程信息的快照,包括:
- 整个堆栈跟踪,
- 如果
lockedMonitors
是true
,那么当前由线程锁定的对象监视器,以及 - 该ownable synchronizers线程当前锁定的,如果
lockedSynchronizers
为true
。
此方法返回一个
ThreadInfo
对象的数组,每个对象是与ids
数组相同索引的线程的线程信息。 如果给定ID的线程不存在或不存在,null
在返回的数组的相应元素中设置null
。 如果一个线程已经启动并且尚未死亡,那么线程是活着的。如果一个线程没有锁定任何对象监视器,或者
lockedMonitors
是false
,则返回的ThreadInfo
对象将具有一个空的MonitorInfo
数组。 同样,如果一个线程没有锁定任何同步器,或者lockedSynchronizers
是false
,返回的ThreadInfo
对象将有一个空的LockInfo
数组。当
lockedMonitors
和lockedSynchronizers
参数均为false
,相当于调用:getThreadInfo(ids, Integer.MAX_VALUE)
此方法专门用于故障排除,但不用于同步控制。 这可能是一个昂贵的操作。
MBeanServer访问 :
的映射类型ThreadInfo
是CompositeData
与作为指定属性ThreadInfo.from
方法。- 参数
-
ids
- 一个线程ID数组。 -
lockedMonitors
- 如果是true
,则检索所有锁定的监视器。 -
lockedSynchronizers
- 如果是true
,则检索所有锁定的可同步同步器。 - 结果
-
ThreadInfo
对象的数组,每个对象包含有关其ID位于ID的输入数组的相应元素中的线程的信息。 - 异常
-
SecurityException
- 如果安全管理器存在,并且调用者没有ManagementPermission(“监视器”)。 -
UnsupportedOperationException
-- 如果
lockedMonitors
是true
但Java虚拟机不支持监视object monitor usage ; 要么 - 如果
lockedSynchronizers
是true
但Java虚拟机不支持监视ownable synchronizer usage 。
- 如果
- 从以下版本开始:
- 1.6
- 另请参见:
-
isObjectMonitorUsageSupported()
,isSynchronizerUsageSupported()
-
dumpAllThreads
ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)
使用堆栈跟踪和同步信息返回所有实时线程的线程信息。 返回的数组中包含的某些线程可能会在该方法返回时被终止。此方法返回的数组
ThreadInfo
个作为指定对象getThreadInfo(long[], boolean, boolean)
方法。- 参数
-
lockedMonitors
- 如果是true
,转储所有锁定的监视器。 -
lockedSynchronizers
- 如果是true
,转储所有锁定的所有同步器。 - 结果
-
一个
ThreadInfo
的所有活动线程的数组。 - 异常
-
SecurityException
- 如果安全管理器存在并且调用者没有ManagementPermission(“监视器”)。 -
UnsupportedOperationException
-- 如果
lockedMonitors
是true
但Java虚拟机不支持监控object monitor usage ; 要么 - 如果
lockedSynchronizers
是true
但Java虚拟机不支持监视ownable synchronizer usage 。
- 如果
- 从以下版本开始:
- 1.6
- 另请参见:
-
isObjectMonitorUsageSupported()
,isSynchronizerUsageSupported()
-
-