【Java NIO 简例】Pipe
程序员文章站
2022-03-07 19:20:49
...
原文:《Java NIO Pipe》
Java NIO 的 Pipe 是一个线程间的单向数据连接。一个Pipe有一个 source channel 和 一个 sink channel。你可以向 sink channel 写入数据。这些数据可以从 source channel 中被读出。
简化结构如下:
创建Pipe
Pipe pipe = Pipe.open();
向Pipe写数据
向Pipe写数据就是向其中的 sink channel 写数据:
Pipe.SinkChannel sinkChannel = pipe.sink(); // byte[] data = ... ByteBuffer buffer = ByteBuffer.allocate(data.length); buffer.clear(); buffer.put(data); buffer.flip(); while (buffer.hasRemaining()) { sinkChannel.write(buffer); }
从Pipe读数据
从Pipe读数据就是从其中的 source channel 读数据:
PipeChannel.SourceChannel sourceChannel = pipe.source(); ByteBuffer buffer = ByteBuffer.allocate(1024); int readByteCount = sourceChannel.read(buffer);
readByteCount 表明此次从 channel 读到 buffer 的字节数。
下一篇: 介绍服务端 Netty 的工作架构图