【问题标题】:Java Non-blocking Read [closed]Java非阻塞读取[关闭]
【发布时间】:2011-03-20 08:50:40
【问题描述】:

我正在尝试从两个不同的输入流(子应用程序的标准输入和标准错误)中读取数据并将它们打印在一个组合帧中。我以前从未这样做过,我想知道最佳做法。

我可以生成两个线程并让它们都阻塞输入流。有没有更好的办法?

谢谢!

【问题讨论】:

标签: java input user-input inputstream io


【解决方案1】:

您的方法很好,但如果您尝试合并两个流,您可能会遇到输出/错误混杂在一起的问题。

也许可以查看Apache commons-exec,这是一个不错的库,用于处理进程调用和输出/错误捕获。在引擎盖下,它完全按照您的建议执行,分叉读取 InputStream(s) 的线程。

【讨论】:

    【解决方案2】:

    拥有两个线程是唯一的解决方案。

    【讨论】:

      【解决方案3】:

      我认为您最好的策略是使用 java.nio 包中的类。签出this example

      【讨论】:

      • 不可能。他正在使用 ProCess 的流。你不能在这些上使用 NIO。
      猜你喜欢
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 2021-01-03
      • 2014-11-17
      • 2015-05-05
      • 2014-04-24
      • 2017-02-18
      相关资源
      最近更新 更多