计算一个线程被抢占了多less次?

我正在尝试确定上下文切换对我的Java线程的影响。 因此,我必须首先知道“有多less次被抢占?” 其次,如果可能的话,“我的线程暂停执行多久了?”。 我非常怀疑这可以从Java完成,但嘿! 有趣的事情是做不可能的事,对吧? :)即使如果我必须重新编译VM或使用某种LINUX工具或黑客,我会很高兴。 所以,现在我们知道不能做到,我们来做吧。 🙂

编辑:加油的人。 另一个问题是优先相关的。 我想你只是喜欢简单而无聊的问题。 这个问题是清楚而有效的。

如果您能够识别您感兴趣的Java线程的Linux TID(线程ID)(假设您的JVM将Java线程映射到Linux线程上),那么伪文件/proc/<tid>/status包含许多统计信息,包括voluntary_ctxt_switchesnonvoluntary_ctxt_switches

它显然不会做你想做的一切,但是你可能会发现java.lang.managementThreadMXBean有用。