我如何获得从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");
答案 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()
导致当前线程等待,直到子进程终止。