我想测量应用程序的总执行时间。特别是,我的应用程序运行两个线程。我想测量从main开始到两个线程完成执行的时间(基本上是main的总执行时间)。我的代码的问题是,总执行时间似乎是在两个线程完成执行之前计算出来的。为了检查这一点,我在MyFirstThread类的运行方法的末尾放了System.out.println("end first"),还把System.out.print("end second")放在MySecondThread类运行方法的结尾。问题是,它打印出总执行时间,然后打印出"结束第一"one_answers"结束第二"。我想要的是首先打印"结束第一"结束第二"(反之亦然),最后打印总执行时间。这是我的代码:
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);
}
在计算总时间之前,您需要连接两个线程。
Thread tf = new Thread(first).start();
Thread ts = new Thread(second).start();
tf.join();
ts.join();
long totalTime = System.nanoTime() - startTime;