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

posted @ 2018-02-26 10:04  羽觞醉月  阅读(145)  评论(0编辑  收藏  举报