有没有办法通过管道传输两个通道?
Is there any way to pipe two channels?
我有一个 ReadableByteChannel
和一个 WritableByteChannel
,现在我想将输出从可读字节通道传输到可写字节通道。换句话说——当可读通道中有可用字节时,我想将它们写入可写通道。
我可以在没有新线程的情况下执行此操作吗?
好吧...如果没有 any 用户-space 线程,您无法在 Java 中执行此操作。在标准 Java 中不可能告诉 OS 到 "replug" 两个文件描述符并使数据传输短路。
(我不知道有任何现代主流 OS 支持这种东西。虽然这不是一个荒谬的想法。如果有人知道 OS 的例子亲切的opf功能,请评论...)
但是,如果您使用 SelectableChannel
和 Selector
API,线程可以穿插 "piping" 做其他事情,包括其他(基于选择器的)I/O 在其他频道。
我有一个 ReadableByteChannel
和一个 WritableByteChannel
,现在我想将输出从可读字节通道传输到可写字节通道。换句话说——当可读通道中有可用字节时,我想将它们写入可写通道。
我可以在没有新线程的情况下执行此操作吗?
好吧...如果没有 any 用户-space 线程,您无法在 Java 中执行此操作。在标准 Java 中不可能告诉 OS 到 "replug" 两个文件描述符并使数据传输短路。
(我不知道有任何现代主流 OS 支持这种东西。虽然这不是一个荒谬的想法。如果有人知道 OS 的例子亲切的opf功能,请评论...)
但是,如果您使用 SelectableChannel
和 Selector
API,线程可以穿插 "piping" 做其他事情,包括其他(基于选择器的)I/O 在其他频道。