如何用线程Java测量总执行时间

时间:2015-12-04 10:52:19

标签: java multithreading

我想测量应用程序的总执行时间。特别是,我的应用程序运行两个线程。我想测量从main开始直到两个线程完成执行的时间(基本上是main的总执行时间)。我的代码的问题是,似乎总执行时间是在两个线程完成执行之前计算的。为了检查这一点,我在MyFirstThread类的run方法的末尾添加了System.out.println(“end first”),并且我还将run.out.println(“end second”)放在run方法的末尾。 MySecondThread类。问题是它打印出总执行时间,然后打印出“结束第一”和“结束第二”。我想要的是首先打印“结束第一”,“结束第二”(反之亦然),最后打印总执行时间。 这是我的代码:

    public static void main(String [] args) throws InterruptedException{

    long startTime = System.nanoTime(); 

    MyFirstThread first = new MyFirstThread();
    MySecondThread second = new MySecondThread(outputPath);

    new Thread(first).start();
    first.semaphore.acquire();
    new Thread(second).start();

    long totalTime = System.nanoTime() - startTime;
    System.out.println("Total time: " + totalTime);     

} 

1 个答案:

答案 0 :(得分:0)

在计算总时间之前,您需要加入两个线程。

Thread tf = new Thread(first).start();
Thread ts = new Thread(second).start();

tf.join();
ts.join();

long totalTime = System.nanoTime() - startTime;