在JAVA里需要依次安装两个WINDOWS可执行程序.采用的方法是:
Thread thr = new Thread() {
public void run() {
try {
String[] cmd = {savePath};
Process proc = java.lang.Runtime.getRuntime().
exec(cmd);
proc.waitFor(); //等待执行完第一个程序 cmd = {savePath2};//开始执行第二个程序
proc = java.lang.Runtime.getRuntime().
exec(cmd);
proc.waitFor();
} catch (Exception ex) {
....
}
}
};
thr.start();
现在发现的问题是,这两个进程在执行的过程中,衔接得并不紧密,即当第一个程序执行完后(即当第一个执行程序的画面点击"完成"按钮),第二个程序的安装画面要很久才弹出来.请问这是什么原因呢.我试着把第二个执行程序换成了显示一个已生成好的对话框,速度同样很慢.所以想知道proc.waitFor()到底做了些什么事.
能不能一点"完成"按钮,立即弹出第二个程序的安装界面?
Thread thr = new Thread() {
public void run() {
try {
String[] cmd = {savePath};
Process proc = java.lang.Runtime.getRuntime().
exec(cmd);
proc.waitFor(); //等待执行完第一个程序 cmd = {savePath2};//开始执行第二个程序
proc = java.lang.Runtime.getRuntime().
exec(cmd);
proc.waitFor();
} catch (Exception ex) {
....
}
}
};
thr.start();
现在发现的问题是,这两个进程在执行的过程中,衔接得并不紧密,即当第一个程序执行完后(即当第一个执行程序的画面点击"完成"按钮),第二个程序的安装画面要很久才弹出来.请问这是什么原因呢.我试着把第二个执行程序换成了显示一个已生成好的对话框,速度同样很慢.所以想知道proc.waitFor()到底做了些什么事.
能不能一点"完成"按钮,立即弹出第二个程序的安装界面?
当子线程的输入或者输出流满的时候,是不能够自动清空的,需要认为的去清空,所以我们一般要增加一个线程,用来专门的清空输入流在另一个线程中来读输入流:
BufferedReader br = new BufferedReader(process.getInputStream());
while(br.readLine()!=null);