java thread 官方文档,ThreadMXBean

ThreadMXBean是Java虚拟机线程系统的管理接口,提供了监测线程ID、CPU时间、线程争用、死锁检测等功能。Java虚拟机具有此接口的单一实现,可通过ManagementFactory.getThreadMXBean()获取。ThreadMXBean支持检测线程CPU时间,但可能默认禁用,可通过isThreadCpuTimeSupported()和setThreadCpuTimeEnabled(boolean)检查及启用。此外,还支持线程争用监视,通过isThreadContentionMonitoringSupported()和setThreadContentionMonitoringEnabled(boolean)判断和控制。接口还包括获取线程信息、死锁线程ID、活动线程数等方法。
摘要由CSDN通过智能技术生成

概述

软件包

使用

已过时

索引

帮助

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值