У меня есть следующий фрагмент кода:Чтение потоков из Java Runtime.exec
Process proc = runtime.exec(command);
errorGobbler = new ErrorStreamGobbler(proc.getErrorStream(), logErrors, mdcMap);
outputGobbler = new OutputStreamGobbler(proc.getInputStream(), mdcMap);
executor.execute(errorGobbler);
executor.execute(outputGobbler);
processExitCode = proc.waitFor();
где gobblers являются Runnable
ы, которые используют BufferedReader
для чтения входных и ошибок потоков процесса, выполняющего. Хотя это работает большую часть времени, я получаю случайное окно (около 2 минут или около того), где я получаю processExitCode
как 0, что указывает на нормальное завершение, но в потоках ввода и ошибок ничего нет - ничего, из потока.
Как я уже указывал ранее, это работает большую часть времени, но этот провал происходит раз в то время - и я полностью озадачен. Есть идеи?
Тряпки
Немного больше контекста - это многопоточное приложение, в котором происходит много Runtime.exec(). Rags – ragstorooks
Вы имеете в виду, что поточные кабачки блокируются навсегда? – EJP
Да, да! Они просто висят ... – ragstorooks