0

java.lang.ThreadInfo类提供了一些非常有用的方法,这些方法提供有关 Java 同步的统计信息。例如:

getBlockedTime() 返回自从启用线程争用监视以来,与此 ThreadInfo 关联的线程已阻止进入或重新进入监视器的近似累积经过时间(以毫秒为单位)。[...]

getWaitedCount() 返回与此 ThreadInfo 关联的线程等待通知的总次数。[...]

我找不到从JVMTI API访问这些信息的函数。我会忽略它还是必须自己收集这些信息?


除了同步统计之外,似乎您甚至无法获得线程 id,可以通过使用Thread.currentThread().getId();

4

1 回答 1

1

这不是那么简单,但我认为您可以通过 JVMTI 事件到达阻塞时间并等待计数(请参阅与“监视器”有关的事件:“监视器竞争输入”和“监视器等待”等)。

重新线程 ID,不,它看起来不像 JVMTI 分配这些。另一方面,我不确定 ThreadInfo 中给出的 ID 实际上是指操作系统分配的任何“真实”ID。

于 2011-04-17T01:23:51.543 回答