简体   繁体   English

线程Java的活动时间

[英]Active Time of Thread Java

How Can I get active time of Thread for which it was actually in running state. 如何获取Thread实际处于运行状态的活动时间。 Minus all the Waiting and Sleeping time. 减去所有等待和睡眠时间。

I didn't seem to find anything in Thread API that gives me desired results. 我似乎没有在Thread API中找到任何能够提供所需结果的内容。

If not exact code any ideas or Pseudo Codes would be great start. 如果不是确切的代码任何想法或伪代码将是伟大的开始。

Thanks 谢谢

Thanks assylias The ThreadMXBean worked for me.. Here is sample code of what I did. 谢谢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;
   }
}

I Put up a sleep of 5 seconds just to check if it was added to CPU time. 我只是睡了5秒钟来检查它是否被添加到CPU时间。 It wasn't added. 它没有添加。 Also I put up empty for loop so that processing takes some time. 我也把空循环放在一起,这样处理就需要一些时间。

Here's Output
Thread-1 :: 15600200
Thread-4 :: 15700100
Thread-3 :: 15600100
Thread-0 :: 15500100
Thread-2 :: 0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM