【问题标题】:Read from multiple processes within Java从 Java 中的多个进程读取
【发布时间】:2013-10-30 10:36:43
【问题描述】:

我使用 Java 中的 Process 类启动了几个 bash 脚本进程。
如果我的程序应该监听进程打印到 STDOUT 的所有输出,我该如何构建我的程序。 该解决方案不应该对 CPU 造成太大压力。 我应该对所有进程进行轮询,还是为每个进程使用一个线程并读取 InputStream 并将其转发到演示线程。

【问题讨论】:

    标签: java multithreading process polling


    【解决方案1】:

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

    【讨论】:

    • 我知道怎么做,更多的是关于架构的问题。每个进程一个线程读取 OutputInputStream 或在一个线程中轮询 OutputStreams。目前我已经实现了轮询方法,但是它的cpu消耗很高。
    • 好的,很高兴您使用游泳池。为了减少消耗,SDK 建议:“对返回的____流进行缓冲是个好主意”。另一个技巧 - 尝试使用 BufferedReader#readLine - 所以控制台输出不会立即打印,而是在 '\n' 符号之后。如果没有'\n',不要忘记刷新最后一行
    猜你喜欢
    • 2010-10-27
    • 2016-06-17
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多