Java NIO管道

Posted 羽觞醉月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java NIO管道相关的知识,希望对你有一定的参考价值。

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值会告诉我们写入了多少个字节到缓冲区

以上是关于Java NIO管道的主要内容,如果未能解决你的问题,请参考以下文章

Java NIO -- 管道 (Pipe)

Java NIO管道

Java NIO 管道 (Pipe)

十Java NIO 管道

NIO 和 IO 的管道有区别吗

Java NIO系列教程 Pipe