日期:2014-05-20  浏览次数:20648 次

监控线程结束
我有一个main方法,起了10个线程,我想在main方法中统计一下10个线程跑完后,总共用了多长时间。怎么弄??

------解决方案--------------------
启动线程前,用System.currentTimeMillis()记录启动时间。

然后用join等待线程执行结束,然后再次调用System.currentTimeMillis(),并得到时间差。
------解决方案--------------------
Java code

import java.text.SimpleDateFormat;
import java.util.Date;

public class C {
    private static int i = 0;

    synchronized static void increase() {
        if (i < 9) {
            i++;
        } else {
            C.class.notify();
        }

    }

    public static void main(String[] args) {
        synchronized (C.class) {
            long begin = System.currentTimeMillis();
            for (int i = 0; i <= 9; i++) {
                new Thread(new T()).start();
            }
            try {
                C.class.wait();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(new SimpleDateFormat("ss秒SSS毫秒")
                    .format(new Date(System.currentTimeMillis() - begin)));
        }

    }

    static class T implements Runnable {

        @Override
        public void run() {
            // dosomething

            C.increase();

        }

    }
}