java多线程耗时统计

假如一共开了5个线程,我想统计5个线程全部跑完所用的时间应该怎么办呢?
我现在的办法是在每一个线程开始时计时
long tStart = System.currentTimeMillis();
然后在线程结束的地方再计时
long tEnd = System.currentTimeMillis();
两个时间相减并打印
System.out.println(tEnd - tStart + "millions");

20813millions
21219millions
21438millions
21454millions
21438millions
21532millions

相加得到所有线程的耗时,掐表计时显示只用了20s,显然这个时间是不对的

每个线程开始时打印:starttime System.currentTimeMillis()

结束时打印:endtime System.currentTimeMillis()

然后看一下
最小的starttime和最大的endtime 就可以了吧

结果是每一个线程用了20s左右啊

可否把具体的应用环境和这个是用线程的代码贴出来?

上下文信息不足哈 :lol:

因为线程是并发的

它们几乎是同时发生的

所以是在20s左右时间内 全部执行完毕

lz可以使用一个main方法
其中调用这些线程
调用之前和退出之前分别得到 System.currentTimeMillis()
这样精确一点

哦 对的

那就这么办试试:
1.starttime还是在调用线程之前赋值
2.endtime 则用一个外部类的静态域来存储 如(TimeHolder.END_TIME)
其中每个线程结束后 都将当前的System.currentTimeMillis()存入那个静态域

这样的话 最后一个线程结束时 TimeHolder.END_TIME最后一次更新

应该就可以得到准确的耗时了