2012-04-11 111 views
3

我正在运行从Java代码使用的shell命令使用ProcessBuilder.start() 当命令完成执行时,我需要回调(或某种通知)。该命令需要10-15秒才能执行。是否有可能使用ProcessBuilderprocessbuilder来运行来自Java的命令

回答

4

ProcessBuilder的start()方法明确指出它返回一个Process,其API为here。该进程具有可以在其上调用的方法,包括waitFor,该进程在进程结束时唤醒当前线程。所有你需要做的就是启动一个线程,给它一个这个进程,并在进程完成时或超时后发出信号。

4

是的,这是可能的。您可以在Process上调用waitFor(),然后等待它返回,然后分析返回的值以确保它为0,或者如果不响应该错误。这通常在后台线程中完成,以免绑定当前线程。