-1
我想測量我的應用程序的總執行時間。特別是,我的應用程序運行兩個線程。我想測量從主開始直到兩個線程完成執行的時間(基本上,主要的總執行時間)。我的代碼的問題是,看起來好像總執行時間是在兩個線程完成執行之前計算的。爲了檢查這一點,我在MyFirstThread類的run方法的末尾放置了System.out.println(「end first」),並且還將System.out.println(「end second」)放在run方法的末尾MySecondThread類。問題是它打印出總執行時間,之後打印出「結束第一」和「結束第二」。我想要的是首先打印「結束第一」「結束第二」(反之亦然),最後打印總執行時間。 這裏我的代碼:如何用線程度量總執行時間Java
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);
}
在記錄總時間之前,請保持對線程的引用並加入它們。 –
這就是線程的要點 - 它們以* parallel *方式運行,彼此獨立。所以在啓動它們之後,當線程仍在運行時,您會到達下一行。 @DavidSchwartz寫道,你可以使用'join',但你應該明白它的作用。 – RealSkeptic