これは私がやっていることの疑似コードです:
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 doc は次のように述べています。
例外: InterruptedException - 現在のスレッドが待機中に別のスレッドによって割り込まれた場合、待機は終了し、InterruptedException がスローされます。
あるスレッドが待機している間に別のスレッドも待機している可能性があるため、それが何を意味するかを理解していますが、この例外をどのように乗り越えれば、waitFor() を使用できるようになります。
どんな助けでも感謝します。コードを投稿する必要はありませんでしたが、必要な場合はお知らせください。
ExecutorService のコード:
while(...){
.......
execServ.execute(...);
}
execServ.shutdown();
while(!execServ.isTerminated()){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}