我想测量一个线程的执行时间,我已经创建了一个示例程序。
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
public class Sample {
public static void main(String[] args ) {
ThreadPoolExecutor exec = (ThreadPoolExecutor)Executors.newFixedThreadPool(1000);
for(int i=0; i<1000; i++) {
exec.execute(new Runnable() {
@Override
public void run() {
long start = System.currentTimeMillis();
try{
Thread.sleep(10000);
} catch(Exception ex) {
ex.printStackTrace();
}
long end = System.currentTimeMillis();
System.out.println("[Sample] Thread id : " + Thread.currentThread().getId() + ", time : " + (end - start));
}
});
}
}
}
每个线程睡眠时间为10秒。所以持续时间=(结束-开始)应该是10000。但是有些线程的时间比预期的要多。我猜测这也包括线程切换时间和和阻塞时间。有没有一种方法可以测量JAVA中线程程序的执行时间?
事情是这样的,我有一个在线程中进行网络调用的程序。所以即使socket超时比如60秒,线程执行时间也接近2分钟。我猜测,上述计算执行时间的方式还考虑了线程切换时间和阻塞时间。它并不是在测量实际的线程执行时间
谢谢,我想测量一个线程的执行时间。