Java中的NIO详解Day11-Pipe
原创
©著作权归作者所有:来自51CTO博客作者攻城狮Chova的原创作品,请联系作者获取转载授权,否则将追究法律责任
基本概念
-
Java NIO中的管道是两个线程之间的单向数据连接
-
Pipe中有一个sink通道和source通道:
- 数据会被写到sink通道
- 数据会从source通道读取
-
Pipe原理:
管道的创建
- 通过调用Pipe.open() 方法打开管道Pipe :
Pipe pipe = Pipe.open();
向管道写入数据
- 要向管道Pipe中写入数据,需要访问sink通道:
Pipe.SinkChannel sinkChannel = pipe.sink();
- 通过调用SinkChannel的write() 方法,将数据写入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();
- 通过调用SourceChannel的read() 方法,从sourceChannel读取数据:
ByteBuffer byteBuffer = ByteBuffer.allocate(64);
int bytesRead = sourceChannel.read(byteBuffer);