如何统计多线程的执行总时间

[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个线程都执行完之后所消耗的总时间?

3个回答

[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方法可实现。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问