如何获取线程实际处于运行状态的活动时间,减去所有等待和睡眠时间。
我在 Thread API 中似乎没有找到可以给我所需结果的内容。
如果没有确切的代码,任何想法或伪代码都是一个很好的开始。
谢谢
如何获取线程实际处于运行状态的活动时间,减去所有等待和睡眠时间。
我在 Thread API 中似乎没有找到可以给我所需结果的内容。
如果没有确切的代码,任何想法或伪代码都是一个很好的开始。
谢谢
感谢 Assylias。 ThreadMXBean 对我很有用。以下是我所做的示例代码。
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
try {
for(int i = 999999999; i > 0; i--){}
Thread.sleep(5000);
ThreadMXBean threadBean = ManagementFactory.getThreadMXBean();
long threadCpuTime = threadBean.getCurrentThreadCpuTime();
System.out.println(Thread.currentThread().getName() + " :: " + threadCpuTime);
} catch (InterruptedException e) {
e.printStackTrace();
return;
}
}
我设置了一个5秒的睡眠时间,只是为了检查它是否被添加到CPU时间中。但是它并没有被添加。另外,我设置了一个空的循环,以便处理需要一些时间。
Here's Output
Thread-1 :: 15600200
Thread-4 :: 15700100
Thread-3 :: 15600100
Thread-0 :: 15500100
Thread-2 :: 0