线程CPU时间的定义是什么?

时间:2012-11-20 22:07:38

标签: java multithreading time cpu

我们如何为非本机线程定义“线程CPU时间”?更具体地说,它是如何在JVM上定义的(其中CPU是从JVM中抽象出来的,因此定义可能与较低级别的进程略有不同)....

我正在使用此测量的JVM实现:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/management/ThreadMXBean.html这似乎不直接定义“线程CPU时间”是直接测量的。

2 个答案:

答案 0 :(得分:1)

线程CPU时间已经是一个非常通用的术语。基本上它代表CPU在给定线程上花费的时间。

它没有任何不同的定义,因为它位于JVM上,唯一需要考虑的重要部分是JVM是否实际上允许您测量它。有些人做,有些则不做。

答案 1 :(得分:1)

一个人不一定要打破抽象。 POSIX确实指定了一种测量每个线程的CPU时间的方法。然后是Windows:)

通过热点源搜索,我看到了:

<强>热点/ SRC /共享/ VM /运行/ os.hpp

  // JVMTI & JVM monitoring and management support
  // The thread_cpu_time() and current_thread_cpu_time() are only
  // supported if is_thread_cpu_time_supported() returns true.
  // They are not supported on Solaris T1.

hotspot / src / os / linux / vm / os_linux.cpp 中,我确实看到 pthread_getcpuclockid 以及用于此目的的 clock_gettime

hotspot / src / os / windows / vm / os_windows.cpp 中,我看到 GetThreadTimes 被使用。