je l'extrait de code suivant:flux de lecture de 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();
où les dindons sont Runnable
s qui utilisent un BufferedReader
pour lire les flux d'entrée et d'erreur du processus d'exécution. Alors que cela fonctionne la plupart du temps, je reçois la fenêtre occasionnelle (environ 2 minutes) où j'obtiens le processExitCode
comme 0, ce qui indique une terminaison normale mais il n'y a rien dans les flux d'entrée et d'erreur - rien n'indique même la fin - de-flux.
Comme je l'ai déjà dit, cela fonctionne la plupart du temps, mais cet échec se produit de temps en temps - et je suis totalement perplexe. Des idées?
Rags
Un peu plus de contexte - il s'agit d'une application multithread où beaucoup de Runtime.exec() se produisent simultanément. Rags – ragstorooks
Vous voulez dire que les gobblers de cours d'eau bloquent pour toujours? – EJP
Oui, ils le font! Ils ont juste accroché ... – ragstorooks