假如一共开了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最后一次更新
应该就可以得到准确的耗时了