Java NIO 通道与选择器深入解析
1. 管道(Pipes)
在 Java 的 java.nio.channels
包中,有一个名为 Pipe
的类。从广义上讲,管道是一种可以在两个实体之间单向传递数据的通道。在 Unix 或类 Unix 操作系统中,管道的概念早已为用户所熟知,它用于将一个进程的输出连接到另一个进程的输入。不过, Pipe
类实现的管道是进程内的(即在 JVM 进程内部),而非进程间的。
Pipe
类会创建一对通道对象,提供回环机制。这两个通道的远端是相连的,所以写入 SinkChannel
的任何数据都会出现在 SourceChannel
上。
以下是 Pipe
类的基本结构:
package java.nio.channels;
public abstract class Pipe {
public static Pipe open() throws IOException;
public abstract SourceChannel source();
public abstract SinkChannel sink();
public static abstract class SourceChannel extends AbstractSelectableChannel implements ReadableByteChannel