【发布时间】:2012-02-17 17:51:03
【问题描述】:
这是我一直在做的伪代码:
ProcessBuilder processBuilder = new ProcessBuilder(cmdToExecute);
Process process = processBuilder.start();
StreamGobbler errorGobbler = new StreamGobbler(process.getErrorStream(), "ERROR");
StreamGobbler outStreamGobbler = new StreamGobbler(process.getInputStream(), "OUTPUT");
errorGobbler.start();
outStreamGobbler.start();
int exitValue = process.waitFor();
process.destroy();
我在使用时遇到了 InterruptedException
Process.waitFor()
命令。当它是一个单线程的 java 应用程序时很好。但 现在它是一个多线程应用程序,我得到了
java.lang.InterruptedException
在那条线上。 Java 文档说:
抛出:InterruptedException - 如果当前线程被中断 由另一个线程在等待时,然后等待结束并且 抛出 InterruptedException
我明白这意味着什么,因为 1 个线程可能正在等待,而另一个线程也想等待,但我如何克服这个异常,并且我将能够使用 waitFor()。
感谢任何帮助。我觉得没有必要发布代码,但如果你们需要,请告诉我。
ExecutorService 的代码:
while(...){
.......
execServ.execute(...);
}
execServ.shutdown();
while(!execServ.isTerminated()){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
【问题讨论】:
-
"1 个线程可能正在等待,而另一个线程也想等待"。不,那还不是。这意味着其他一些线程中断了
wait()调用。 -
感谢 Gray 纠正我,我应该怎么做才能消除这个错误?
标签: java multithreading interrupted-exception