在我的java应用程序中,我有一个日志备份功能:
rt = Runtime.getRuntime();
pr = rt.exec(command);
int exitVal = pr.waitFor();
if(exitVal == 0)
return true
问题是备份日志并获得响应需要一段时间,直到那时我的应用程序冻结了。如果我删除pr.waitFor()
函数调用,我会收到响应,但日志备份无法正常工作。
答案 0 :(得分:2)
waitFor()方法导致当前线程在必要时等待,直到此Process对象表示的进程终止。如果子进程已终止,则此方法立即返回。如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出。
因此,您可以创建另一个执行命令的线程。 pr = rt.exec(命令); 。您可能必须异步执行此任务。因为直到子进程终止进程才会等待。
答案 1 :(得分:1)
是的,你应该在一个单独的线程中完成这项工作。阅读有关Runnable接口和Thread类
的信息