Java NIO 管道是两个线程之间的单向数据连接。Pipe有一个source通道和sink通道(内部类)。数据会被写到sink通道,从source通道读取。
给一张Pipe通道的原理图:
创建管道:
Pipe pipe = Pipe.open();
向管道写数据:
Pipe.SinkChannel sinkChannel = pipe.sink();
String str = "some things";
ByteBuffer buf = ByteBuffer.allcote(1024);
buf.clear();
buf.put(str.getBytes());
buf.flip();
while(buf.hasRemaining()){
sinkChannel.write(buf)
}
从管道读数据:
Pipe.SourceChannel sourceChannel = pipe.source();
ByteBuffer buf = ByteBuffer.allcote(1024);
int bytr = sourceChannel.read(buf);
read()方法返回的int值会告诉我们写入了多少个字节到缓冲区