Java线程的活动时间

4

如何获取线程实际处于运行状态的活动时间,减去所有等待和睡眠时间。

我在 Thread API 中似乎没有找到可以给我所需结果的内容。

如果没有确切的代码,任何想法或伪代码都是一个很好的开始。

谢谢


3
您可以使用这个链接获取总CPU时间。 - assylias
1
void run(){ long startTime=System.currentTimeMillis();//TODO:WORK long endTime=System.currentTimeMillis(); System.out.println((endTime-startTime); }// 这段代码可以用来计算run函数的执行时间 - Sanjeev
1个回答

3

感谢 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接