我想运行一个外部程序重复N次,每次等待输出并处理它。由于顺序运行速度太慢,我尝试了多线程。 的代码看起来是这样的:我应该如何在Java中使用多线程执行外部命令?
public class ThreadsGen {
public static void main(String[] pArgs) throws Exception {
for (int i =0;i < N ; i++)
{
new TestThread().start();
}
}
static class TestThread extends Thread {
public void run() {
String cmd = "programX";
String arg = "exArgs";
Process pr;
try {
pr = new ProcessBuilder(cmd,arg).start();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
pr.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
//process output files from programX.
//...
}
然而,在我看来,只有一个线程同时运行(通过检查CPU使用率)。
我想要做的是获取所有线程(除了正在等待programX完成的线程)工作吗?我的代码有什么问题?
是否因为pr.waitFor();
使主线程等待每个子线程?
谢谢。对不起,迟来的回复 – 2011-06-07 13:32:49