Pipe


基本概念


  • Java NIO中的管道是两个线程之间的单向数据连接
  • Pipe中有一个sink通道和source通道:


    • 数据会被写到sink通道
    • 数据会从source通道读取


  • Pipe原理:
    Java中的NIO详解Day11-Pipe_nio

管道的创建

  • 通过调用Pipe.open() 方法打开管道Pipe :
Pipe pipe = Pipe.open();

向管道写入数据

  • 要向管道Pipe中写入数据,需要访问sink通道:
Pipe.SinkChannel sinkChannel = pipe.sink();
  • 通过调用SinkChannelwrite() 方法,将数据写入sinkChannel:
Byte byteBuffer = ByteBuffer.allocate(64);
byteBuffer.clear();
byteBuffer.put(datas.getBytes());
byteBuffer.flip();
while (byteBuffer.hasRemaining()) {
sinkChannel.write(byteBuffer);
}

从管道读取数据

  • 要从管道Pipe中读取数据,需要访问source通道:
Pipe.SourceChannel sourceChannel = pipe.source();
  • 通过调用SourceChannelread() 方法,从sourceChannel读取数据:
ByteBuffer byteBuffer = ByteBuffer.allocate(64);
int bytesRead = sourceChannel.read(byteBuffer);