在我的Java应用程序中,我有一个日志备份功能: rt = Runtime.getRuntime(); pr = rt.exec(command); int exitVal = pr.waitFor(); if(exitVal == 0) return true 问题在于备份日志和获取响应需要一些时间,这样我的应用程序就会冻结。如果我删除pr.waitFor()函数调用,我可以得到响应,但是日志备份无法正常工作。
waitFor() 方法会使当前线程等待,直到由该 Process 对象表示的进程终止为止。如果子进程已经终止,则该方法立即返回。如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出。 因此,您可以创建另一个线程来执行命令。pr = rt.exec(command);。您可能需要异步执行此任务。因为在子进程终止之前,进程将等待。
SwingWorker
就是这样做的(或多或少)。 - MadProgrammer