类java.lang.ThreadInfo提供了一些非常有用的方法,这些方法提供了有关Java同步的统计信息。例如:
getBlockedTime() 返回自启用线程争用监视以来,与此ThreadInfo关联的线程已阻止进入或重新进入监视器的大致累计已用时间(以毫秒为单位)。 [...]
getWaitedCount() 返回与此ThreadInfo关联的线程等待通知的总次数。 [...]
我找不到从JVMTI API访问这些信息的功能。我是否忽视它或者我是否必须自己收集这些信息?
除了同步统计之外,你似乎甚至无法获得一个Threads id,可以通过Thread.currentThread().getId();
获得
答案 0 :(得分:1)
这不是那么简单,但我认为你可以通过JVMTI事件到达阻塞时间和等待计数(参见“监视器”事件:“监视器争用输入”和“监视器等待”等)。 / p>
重新获取线程ID,不会看起来像JVMTI分配这些。另一方面,我不确定ThreadInfo中给出的ID实际上是指O / S分配的任何“真实”ID。