- java.lang.Object
-
- java.lang.management.ThreadInfo
-
public class ThreadInfo extends Object
线程信息。ThreadInfo包含有关线程的信息,包括:一般线程信息
- 线程ID。
- 线程名称
- 线程是否是守护线程
执行信息
- 线程状态。
- 由于以下原因导致线程被阻塞的对象:
- 等待输入同步块/方法,或
- 等待通过
Object.wait方法通知,或 - 由于
LockSupport.park电话停车。
- 拥有线程被阻止的对象的线程的ID。
- 堆栈跟踪的线程。
- 由线程锁定的对象监视器列表。
- 列表ownable synchronizers被线程锁定。
- 线程优先级
Synchronization Statistics
- 线程阻塞同步或等待通知的次数。
- 自启用
thread contention monitoring以来,线程已阻止同步或等待通知的累积经过时间。 某些Java虚拟机实现可能不支持此功能。 可以使用ThreadMXBean.isThreadContentionMonitoringSupported()方法来确定Java虚拟机是否支持此功能。
该线程信息类设计用于监视系统,不用于同步控制。
MXBean映射
ThreadInfo被映射到CompositeData作为指定具有属性from方法。- 从以下版本开始:
- 1.5
- 另请参见:
-
ThreadMXBean.getThreadInfo(long),ThreadMXBean.dumpAllThreads(boolean, boolean)
-
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 static ThreadInfofrom(CompositeData cd)返回由给定的CompositeData表示的ThreadInfo对象。longgetBlockedCount()返回与此ThreadInfo相关联的线程阻止进入或重新输入监视器的总次数。longgetBlockedTime()返回与启用线程争用监控功能相关联的与此ThreadInfo相关联的线程阻止进入或重新输入监视器的大致累积已用时间(以毫秒为单位)。MonitorInfo[]getLockedMonitors()返回一个MonitorInfo个对象的数组,每个对象表示当前由与此ThreadInfo相关联的线程锁定的对象监视器。LockInfo[]getLockedSynchronizers()返回的数组LockInfo对象,每个对象的表示ownable synchronizer当前由与此相关联的线程锁定ThreadInfo。LockInfogetLockInfo()返回一个对象的LockInfo,该对象与此ThreadInfo相关联的线程被阻止等待。StringgetLockName()返回string representation,与此相关的线程的对象的ThreadInfo被阻塞等待。longgetLockOwnerId()返回拥有与此ThreadInfo相关联的线程被阻止等待的对象的线程的ID。StringgetLockOwnerName()返回拥有与此ThreadInfo相关联的线程被阻止等待的对象的线程的名称。intgetPriority()返回 thread priority与此相关的线程ThreadInfo。StackTraceElement[]getStackTrace()返回与此ThreadInfo相关联的线程的堆栈跟踪。longgetThreadId()返回与此ThreadInfo相关联的线程的ID。StringgetThreadName()返回与此ThreadInfo相关联的线程的名称。Thread.StategetThreadState()返回与此ThreadInfo相关联的线程的状态。longgetWaitedCount()返回与此ThreadInfo相关联的线程等待通知的总次数。longgetWaitedTime()返回与此ThreadInfo相关联的线程等待通知的大致累积经过时间(以毫秒为单位),因为启用了线程争用监控。booleanisDaemon()测试与此ThreadInfo相关联的线程是否为 daemon thread 。booleanisInNative()测试与此ThreadInfo相关联的线程是否通过Java Native Interface(JNI)执行本机代码。booleanisSuspended()测试与此ThreadInfo相关联的线程是否暂停。StringtoString()返回此线程信息的字符串表示形式。
-
-
-
方法详细信息
-
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虚拟机不支持此操作。 - 另请参见:
-
ThreadMXBean.isThreadContentionMonitoringSupported(),ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
-
getBlockedCount
public long getBlockedCount()
返回与此ThreadInfo关联的线程阻塞进入或重新输入监视器的总次数。 也就是线程已经处于BLOCKED状态的次数。- 结果
-
线程进入
BLOCKED状态的总次数。
-
getWaitedTime
public long getWaitedTime()
返回与此ThreadInfo相关联的线程等待通知的大致累积经过时间(以毫秒为单位),因为启用了线程争用监控。 即线程争用监控启用后,线程已经处于WAITING或TIMED_WAITING状态的总累计时间。 如果线程争用监控被禁用,此方法返回-1。Java虚拟机可以使用高分辨率定时器来测量时间。 当重新启用线程争用监控时,此统计信息将重置。
- 结果
-
线程已处于
WAITING或TIMED_WAITING状态的大致累计消耗时间(以毫秒为单位);-1如果线程争用监控被禁用。 - 异常
-
UnsupportedOperationException- 如果Java虚拟机不支持此操作。 - 另请参见:
-
ThreadMXBean.isThreadContentionMonitoringSupported(),ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)
-
getWaitedCount
public long getWaitedCount()
返回与此ThreadInfo关联的线程等待通知的总次数。 即线程在WAITING或TIMED_WAITING状态下的次数。- 结果
-
线程在
WAITING或TIMED_WAITING状态的总次数。
-
getLockInfo
public LockInfo getLockInfo()
返回LockInfo,与此相关的线程的对象的ThreadInfo被阻塞等待。 一个线程可以被阻止等待以下之一:- 要获取用于输入或重新进入同步块/方法的对象监视器。
线程处于BLOCKED状态,等待输入synchronized语句或方法。 - 一个对象监视器被另一个线程通知。
线程在WAITING或TIMED_WAITING状态由于调用了Object.wait方法。 - 负责线程停车的同步对象。
线程在WAITING或TIMED_WAITING状态由于调用了LockSupport.park方法。 同步对象是从LockSupport.getBlocker方法返回的对象。 通常是ownable synchronizer或Condition。
该方法返回
null如果线程不在上述任何一种情况。- 结果
-
LockInfo的线程被阻塞等待的对象; 否则为null。 - 从以下版本开始:
- 1.6
- 要获取用于输入或重新进入同步块/方法的对象监视器。
-
getLockName
public String getLockName()
返回string representation,与此相关的线程的对象的ThreadInfo被阻塞等待。 这个方法相当于调用:getLockInfo().toString()
此方法将返回
null如果此线程不阻塞等待任何对象或者对象不是任何线程所有。- 结果
-
线程阻塞的对象的字符串表示;
否则为
null。 - 另请参见:
-
getLockInfo()
-
getLockOwnerId
public long getLockOwnerId()
返回拥有与此ThreadInfo相关联的线程被阻止等待的对象的线程的ID。 此方法将返回-1如果此线程不阻塞等待任何对象,或者该对象不是任何线程所有。- 结果
-
该线程被阻止的对象的所有者线程的线程ID;
-1如果此线程未被阻止或者该对象不是任何线程所有。 - 另请参见:
-
getLockInfo()
-
getLockOwnerName
public String getLockOwnerName()
返回拥有与此ThreadInfo相关联的线程被阻止等待的对象的线程的名称。 此方法将返回null如果此线程不阻塞等待任何对象,或者该对象不是任何线程所有。- 结果
-
拥有该线程被阻止的对象的线程的名称;
null如果此线程未被阻止或者对象不是任何线程所有。 - 另请参见:
-
getLockInfo()
-
getStackTrace
public StackTraceElement[] getStackTrace()
返回与该ThreadInfo相关联的线程的堆栈跟踪。 如果没有为此线程信息请求堆栈跟踪,则此方法将返回零长度数组。 如果返回的数组非零长度,则数组的第一个元素表示堆栈的顶部,这是序列中最近的方法调用。 数组的最后一个元素表示堆栈的底部,这是序列中最近最少的方法调用。在某些情况下,某些Java虚拟机可能会从堆栈跟踪中省略一个或多个堆栈帧。 在极端情况下,允许没有关于与该
ThreadInfo相关联的线程的堆栈跟踪信息的虚拟机从该方法返回零长度数组。- 结果
-
一个数组的
StackTraceElement对象的线程。
-
isSuspended
public boolean isSuspended()
测试与此ThreadInfo相关联的线程是否暂停。 如果调用了Thread.suspend(),此方法返回true。- 结果
-
true如果线程暂停;false否则。
-
isInNative
public boolean isInNative()
测试与此ThreadInfo相关联的线程是否通过Java Native Interface(JNI)执行本机代码。 JNI本机代码不包括虚拟机支持代码或虚拟机生成的已编译本机代码。- 结果
-
true如果线程正在执行本机代码;false否则。
-
isDaemon
public boolean isDaemon()
测试与此ThreadInfo相关联的线程是否为 daemon thread 。- 结果
-
true如果线程是守护线程,否则为false。 - 从以下版本开始:
- 9
- 另请参见:
-
Thread.isDaemon()
-
getPriority
public int getPriority()
返回 thread priority与此相关的线程ThreadInfo。- 结果
-
与此
ThreadInfo相关联的线程的优先级。 - 从以下版本开始:
- 9
-
from
public static ThreadInfo from(CompositeData cd)
返回由给定的CompositeData表示的ThreadInfo对象。 给定的CompositeData必须包含以下属性,除非另有规定:Attribute Name Type threadId java.lang.LongthreadName java.lang.StringthreadState java.lang.Stringsuspended java.lang.BooleaninNative java.lang.BooleanblockedCount java.lang.LongblockedTime java.lang.LongwaitedCount java.lang.LongwaitedTime java.lang.LonglockInfo javax.management.openmbean.CompositeData- the mapped type forLockInfoas specified in theLockInfo.from(javax.management.openmbean.CompositeData)method.If
cddoes not contain this attribute, theLockInfoobject will be constructed from the value of thelockNameattribute.lockName java.lang.StringlockOwnerId java.lang.LonglockOwnerName java.lang.StringstackTrace javax.management.openmbean.CompositeData[]Each element is a
CompositeDatarepresenting StackTraceElement containing the following attributes:Attribute Name Type moduleName java.lang.StringmoduleVersion java.lang.StringclassName java.lang.StringmethodName java.lang.StringfileName java.lang.StringlineNumber java.lang.IntegernativeMethod java.lang.BooleanlockedMonitors javax.management.openmbean.CompositeData[]whose element type is the mapped type forMonitorInfoas specified in theMonitor.frommethod.If
cddoes not contain this attribute, this attribute will be set to an empty array.lockedSynchronizers javax.management.openmbean.CompositeData[]whose element type is the mapped type forLockInfoas specified in theLockInfo.from(javax.management.openmbean.CompositeData)method.If
cddoes not contain this attribute, this attribute will be set to an empty array.daemon java.lang.Booleanpriority java.lang.Integer- 参数
-
cd-CompositeData代表ThreadInfo - 结果
-
一个
ThreadInfo对象由cd表示,如果cd不是null;null否则。 - 异常
-
IllegalArgumentException- 如果cd不表示具有上述属性的ThreadInfo。
-
getLockedMonitors
public MonitorInfo[] getLockedMonitors()
返回一个MonitorInfo个对象的数组,每个对象表示当前由与此ThreadInfo相关联的线程锁定的对象监视器。 如果没有为此线程信息请求锁定的监视器,或者线程未锁定监视器,则此方法将返回零长度的数组。- 结果
-
表示由线程锁定的对象监视器的
MonitorInfo对象的数组。 - 从以下版本开始:
- 1.6
-
getLockedSynchronizers
public LockInfo[] getLockedSynchronizers()
返回的数组LockInfo对象,每个对象的表示ownable synchronizer当前由与此相关联的线程锁定ThreadInfo。 如果没有为此线程信息请求锁定的同步器,或线程未锁定同步器,则此方法将返回零长度的数组。- 结果
-
一组
LockInfo对象,表示线程锁定的自己的同步器。 - 从以下版本开始:
- 1.6
-
-