在我的Java应用程序,我有一个日志备份的功能:Java进程WAITFOR()函数会导致应用程序冻结
rt = Runtime.getRuntime();
pr = rt.exec(command);
int exitVal = pr.waitFor();
if(exitVal == 0)
return true
问题是,它需要一段时间来备份日志,并得到回应,直到然后我的应用程序冻结。如果我删除了pr.waitFor()
函数调用,我得到一个响应,但日志备份无法工作。
要么你需要等待它,要么你不需要。根据你的确切上下文,你可以使用某种后台线程来执行进程,并有某种观察者,当进程完成时会收到通知。来自Swing API的'SwingWorker'做了这个(或多或少) – MadProgrammer
根据这个试验,它的工作原理。 http://stackoverflow.com/questions/3489543/how-to-call-a-method-with-a-separate-thread-in-java/3489549 –