InputStream to Channel for Selector

Dan*_*Dan 5 java nio

我搜索了高低,但找不到明确的、最新的答案来回答我关于 NIO 的问题。

有什么方法可以从 an 转换InputStream为 a Channel,我可以使用 aSelector吗?似乎Channels.newChannel()是进行转换的唯一方法,但不提供 的实例AbstractSelectableChannel,这正是我所需要的。

更具体地说,我想从子进程的stdoutstderr流中读取,而不为每个流创建一个线程,这似乎是在纯 Java 中执行此操作的唯一方法。由于这些流使用管道来回传递 I/O,我很惊讶.newChannel没有返回 a Pipe.SourceChannel,它是AbstractSelectableChannel.

我正在使用 Java 7(尽管如果 8 中有新功能,我仍然很乐意回答)。

编辑:我也尝试将结果投射.newChannel()到可选频道无济于事 - 它不是可选频道。

use*_*421 3

无法完成您所要求的操作,但您不需要每个流都有一个线程。只需将流与为此目的提供的 API 合并,并读取当前线程中的输出即可。