2013-06-19 59 views
1

我怎麼能得到通過從Java稱爲某cmd命令所花費的時間 假如我發出Exec之後ICMP請求獲得通過執行cmd命令在java中所花費的時間

String icmpRequest= "ping 192.168.3.3"; 
Runtime.getRuntime().exec(icmpRequest); 

被稱爲我的功能完成到下一行。 有沒有辦法知道執行此命令所消耗的時間,或者在此過程完成之前停止此線程。

我們可以說,該過程是過程的輸入流完以後返回數據

BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); 

      //reads the outputs 
      String inputLine = in.readLine(); 
      if(inpuLine!=null) 
      System.out.println("process finished"); 

回答

3

exec返回Process您可以使用:

long start = System.nanoTime(); 
Process p = Runtime.getRuntime().exec(icmpRequest); 
p.waitFor(); 
long end = System.nanoTime(); 
System.out.println("it took: " + ((end - start)/1000000) + "ms"); 

注意:如果你想繼續在進程完成時做其他事情,可以從單獨的線程調用它。

1

日誌System.currentTimeMillis()(以毫秒爲單位返回當前時間)作爲執行過程之前的最後一件事。過程結束後立即減去。

String icmpRequest= "ping 192.168.3.3"; 

long start = System.currentTimeMillis(); 
Process p = Runtime.getRuntime().exec(icmpRequest); 
p.waitFor(); 

System.out.println("Took " + (start - System.currentTimeMillis()) + " ms"); 

Process.waitFor()導致當前線程等待,直到子進程終止。