在java中执行cmd命令所需的时间

时间:2013-06-19 20:09:41

标签: java cmd

我如何获得从java调用的某个cmd命令所花费的时间 假设我发出了icmp请求

String icmpRequest= "ping 192.168.3.3";
Runtime.getRuntime().exec(icmpRequest); 
调用exec后,我的函数将完成到下一行。 有没有办法知道执行此命令所消耗的时间,或者在此过程完成之前停止此线程。

我们可以说过程在流程返回数据的输入流之后完成

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

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

2 个答案:

答案 0 :(得分: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 :(得分: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()导致当前线程等待,直到子进程终止。