2012-04-11 109 views
3

我正在運行從Java代碼使用的shell命令使用ProcessBuilder.start() 當命令完成執行時,我需要回調(或某種通知)。該命令需要10-15秒才能執行。是否有可能使用ProcessBuilderprocessbuilder來運行來自Java的命令

回答

4

ProcessBuilder的start()方法明確指出它返回一個Process,其API爲here。該進程具有可以在其上調用的方法,包括waitFor,該進程在進程結束時喚醒當前線程。所有你需要做的就是啓動一個線程,給它一個這個進程,並在進程完成時或超時後發出信號。

4

是的,這是可能的。您可以在Process上調用waitFor(),然後等待它返回,然後分析返回的值以確保它爲0,或者如果不響應該錯誤。這通常在後臺線程中完成,以免綁定當前線程。