[code="java"]
public class Test {
public static void main(String[] args) {
long startTime= System.currentTimeMillis();//开始时间
new Thread(new Runnable(){
public void run(){
for(int i=0;i<1000;i++){
System.out.println("A:"+i);
}
//call method 1
}
}).start();
new Thread(new Runnable(){
public void run() {
for(int j=0;j<1000;j++){
System.out.println("B:"+j);
}
}
}).start();
//还有N个
System.out.println("执行总时间:???");
}
}
[/code]
姑且不讨论多线程为什么要写成这样。
请问,如何统计从执行开始,到最后N个线程都执行完之后所消耗的总时间?
[code="java"]long time1 = System.currentTimeMillis();
List threads = new ArrayList();
for(int i=0;i<n;i++) {
Thread t = new Thread(someRunnable);
threads.add(t);
}
for(Thread t : threads) {
t.join(); // 用join()等待所有的线程。先后顺序无所谓,当这段执行完,肯定所有线程都结束了。
}
long time2 = System.currentTimeMillis();
System.out.println(time2-time1);[/code]
在程序一开始打印一下时间,在线程内部结束的时候打印一下时间,最后一个打印的就是结束时间
使用CountDownLatch的await和countDown方法可实现。