gpt4 book ai didi

java - java中如何测量一个线程从new到结束到底需要多长时间

转载 作者:行者123 更新时间:2023-11-30 07:13:45 24 4
gpt4 key购买 nike

问题:

  1. 是否有办法获取线程从新建到结束所需的确切时间?
  2. 为什么每次的结果都有很大的差异(见下面的代码)?

代码:

public void process2(){
final long start = System.currentTimeMillis();
Thread newT = new Thread(new Runnable() {
@Override
public void run() {
// long end = System.currentTimeMillis();
// System.out.println((end-start));

for (int i = 1, sum = 0; i < 1000; i++) {
sum += i;
}
}
});
long end1 = System.currentTimeMillis();
System.out.println("new thread time took :" + (end1 - start));
newT.start();

int i = 0;
while (newT.isAlive()) {
i++;
}

long end = System.currentTimeMillis();
System.out.println("total time:" + (end - start));
System.out.println("judge count:" + i);

}

最佳答案

  1. 通常更重要的是测量执行时间,即执行 run() 方法所花费的时间。不同运行之间的这个时间通常是相似的。

  2. 创建新的Thread对象的成本相当高,并且取决于系统当前可用的资源,这就是为什么Thread之间花费的时间可能存在很大差异 创建及其执行。更重要的是,在销毁线程之前,有一个清理过程也会占用大量时间。

优化线程管理时间(创建/销毁)的一种方法是使用ThreadPoolExecutorService。请参阅 Oracle concurrency tutorial了解更多详情。

关于java - java中如何测量一个线程从new到结束到底需要多长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38764647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com