2013-10-30 22 views
0

我使用Java中的Process类来启动多个bash脚本进程。
如果应该监听进程打印到标准输出的所有输出,我该如何构建我的程序。 解决方案不应该强调CPU。 我应该使用轮询所有进程还是使用每个进程的线程并读取InputStream并将其转发到演示线程。从Java中的多个进程读取

回答

0

Process类包含以下方法:getOutputStream()getInputStream()getErrorStream(),使用这些你可以重定向你的输出到标准输出

+0

我知道如何做到这一点,它更多有关架构的问题。每个进程的一个线程读取OutputInputStream或轮询一个线程中的OutputStreams。目前我已经实现了轮询方法,但它的CPU消耗很高。 –

+0

好吧,很好,你使用一个游泳池。为了减少消耗,SDK建议:“*返回____流被缓冲*”是一个好主意。另一个技巧 - 尝试使用BufferedReader#readLine - 因此控制台输出不会立即打印,而是紧跟在'\ n'符号之后。如果没有'\ n',请不要忘记清空最后一行 – Dewfy