java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

java.lang.management
类 ThreadInfo

java.lang.Object
  继承者 java.lang.management.ThreadInfo

public class ThreadInfo
extends Object

线程信息。ThreadInfo 包含关于线程的信息,包括:

常规线程信息

  • 线程 ID。
  • 线程名称。

执行信息

  • 线程状态。
  • 线程在其上阻塞的对象等待进入同步块或等待在 Object.wait 调用中被通知。
  • 拥有阻塞线程对象的线程的 ID。
  • 线程的堆栈跟踪。

同步统计数据

  • 由于同步或等待通知而阻塞线程的次数。
  • 自从启动线程争用监视以来,由于同步或等待通知而阻塞线程的累积时间。某些 Java 虚拟机实现可能不支持此功能。ThreadMXBean.isThreadContentionMonitoringSupported() 方法可用于确定 Java 虚拟机是否支持此功能。

此线程信息类设计用于监视系统,不用于同步控制。

MXBean 映射

ThreadInfo 映射到一个具有 from 方法中指定属性的 CompositeData

从以下版本开始:
1.5
另请参见:
ThreadMXBean.isThreadContentionMonitoringSupported()

方法摘要
static ThreadInfo from(CompositeData cd)
          返回由给定 CompositeData 表示的 ThreadInfo 对象。
 long getBlockedCount()
          返回与此 ThreadInfo 相关的被阻塞的线程进入或重新进入监视器的总次数。
 long getBlockedTime()
          返回自从启用线程争用监视以来,与此 ThreadInfo 相关的线程被阻塞进入或重新进入监视器的近似累积时间(以毫秒为单位)。
 String getLockName()
          返回监视器锁定的字符串表示形式,与此 ThreadInfo 相关的线程被锁定进入或正等待通过 Object.wait 方法得到通知。
 long getLockOwnerId()
          返回线程的 ID,此线程保持对象的监视器锁定,该对象上与此 ThreadInfo 相关的线程被阻塞。
 String getLockOwnerName()
          返回线程的名称,此线程保持对象的监视器锁定,该对象上与此 ThreadInfo 相关的线程被阻塞。
 StackTraceElement[] getStackTrace()
          返回与此 ThreadInfo 相关的线程的堆栈跟踪。
 long getThreadId()
          返回与此 ThreadInfo 相关的线程的 ID。
 String getThreadName()
          返回与此 ThreadInfo 相关的线程的名称。
 Thread.State getThreadState()
          返回与此 ThreadInfo 相关的线程的状态。
 long getWaitedCount()
          返回与此 ThreadInfo 相关的线程等待通知的总次数。
 long getWaitedTime()
          返回自从启用线程争用监视以来,与此 ThreadInfo 相关的线程等待通知的近似累积时间(以毫秒为单位)。
 boolean isInNative()
          测试与此 ThreadInfo 相关的线程是否通过 Java 本机接口 (JNI) 执行本机代码。
 boolean isSuspended()
          测试与此 ThreadInfo 相关的线程是否被挂起。
 String toString()
          返回此线程信息的字符串表示形式。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

方法详细信息

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 相关的线程等待通知的近似累积时间(以毫秒为单位)。即自从启用线程争用监视以来,线程为 WAITINGTIMED_WAITING 状态的总累积时间。如果线程争用监视被禁用,此方法将返回 -1

Java 虚拟机可能会使用高精度计时器测量时间。当重新启用线程争用监视时,将重置这个统计数据。

返回:
线程为 WAITINGTIMED_WAITING 状态的近似累积时间(以毫秒为单位);如果禁用了线程争用监视,则返回 -1
抛出:
UnsupportedOperationException - 如果 Java 虚拟机不支持此操作。
另请参见:
ThreadMXBean.isThreadContentionMonitoringSupported(), ThreadMXBean.setThreadContentionMonitoringEnabled(boolean)

getWaitedCount

public long getWaitedCount()
返回与此 ThreadInfo 相关的线程等待通知的总次数。即线程为 WAITINGTIMED_WAITING 状态的次数。

返回:
线程为 WAITINGTIMED_WAITING 状态的总次数。

getLockName

public String getLockName()
返回监视器锁定的字符串表示形式,与此 ThreadInfo 相关的线程被锁定进入或正等待通过 Object.wait 方法得到通知。返回的监视器锁定字符串表示形式由以下内容组成:类(该对象是它的一个实例)名称、at 标记字符 '@' 和对象的 identity 哈希码的十六进制无符号表示形式。根据 System.identityHashCode(java.lang.Object) 方法的实现不同,返回的字符串可能不是惟一的。此方法返回的字符串等于以下表达式的值:
 lock.getClass().getName() + '@' + Integer.toHexString(System.identityHashCode(lock))
 
其中 lock 为监视器锁定对象。

如果线程没有被阻塞,可以进入任何监视对象,或者没有在监视器对象等待 Object.wait 调用中的通知,此方法将返回 null

返回:
监视器锁定的字符串表示形式,线程被阻塞而无法进入,或等待通过 Object.wait 方法得到通知(如果有);否则为 null

getLockOwnerId

public long getLockOwnerId()
返回线程的 ID,此线程保持对象的监视器锁定,该对象上与此 ThreadInfo 相关的线程被阻塞。如果此线程没有被阻塞或没有在任何监视器上等待,或者,如果监视器锁定没有由任何线程保持,此方法将返回 -1

返回:
对象(此线程在其上阻塞)的监视器锁定的所有者线程的线程 ID;如果此检查没有被阻塞或没有在任何监视器上等待,或者,如果监视器锁定没有由任何线程保持,则返回 -1
另请参见:
getLockName()

getLockOwnerName

public String getLockOwnerName()
返回线程的名称,此线程保持对象的监视器锁定,该对象上与此 ThreadInfo 相关的线程被阻塞。如果此线程没有被阻塞或没有在任何监视器上等待,或者,如果监视器锁定没有由任何线程保持,此方法将返回 null

返回:
保持对象(此线程在其上阻塞)的监视器锁定的线程的名称;如果此线程没有被阻塞或没有在任何监视器上等待,或者,如果监视器锁定没有由任何线程保持,则返回 null
另请参见:
getLockName()

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

toString

public String toString()
返回此线程信息的字符串表示形式。

覆盖:
Object 中的 toString
返回:
此线程信息的字符串表示形式。

from

public static ThreadInfo from(CompositeData cd)
返回由给定 CompositeData 表示的 ThreadInfo 对象。给定的 CompositeData 必须包含以下属性:
属性名称 类型
threadId java.lang.Long
threadName java.lang.String
threadState java.lang.String
suspended java.lang.Boolean
inNative java.lang.Boolean
blockedCount java.lang.Long
blockedTime java.lang.Long
waitedCount java.lang.Long
waitedTime java.lang.Long
lockName java.lang.String
lockOwnerId java.lang.Long
lockOwnerName java.lang.String
stackTrace javax.management.openmbean.CompositeData[]

每个元素都是表示 StackTraceElement 的 CompositeData,包含以下属性:

属性名称 类型
className java.lang.String
methodName java.lang.String
fileName java.lang.String
lineNumber java.lang.Integer
nativeMethod java.lang.Boolean

参数:
cd - 表示 ThreadInfoCompositeData
返回:
如果 cd 不为 null,则返回由 cd 表示的 ThreadInfo 对象;否则返回 null
抛出:
IllegalArgumentException - 如果 cd 不表示具有上述属性的 ThreadInfo

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策