1. 首页
  2. Java NIO教程

第12篇:Java NIO系列教程(十一) Pipe

原文链接 作者:Jakob Jenkov 译者:黄忠 校对:丁一

Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。

这里是Pipe原理的图示:

ioxiliejiaochengshiyipipe_1.png

创建管道

通过Pipe.open()方法打开管道。例如:


Pipe pipe = Pipe.open();

向管道写数据

要向管道写数据,需要访问sink通道。像这样:


Pipe.SinkChannel sinkChannel = pipe.sink();

通过调用SinkChannel的write()方法,将数据写入SinkChannel,像这样:


String newData = "New String to write to file..." + System.currentTimeMillis(); ByteBuffer buf = ByteBuffer.allocate(48); buf.clear(); buf.put(newData.getBytes()); buf.flip(); while(buf.hasRemaining()) { sinkChannel.write(buf); }

从管道读取数据

从读取管道的数据,需要访问source通道,像这样:


Pipe.SourceChannel sourceChannel = pipe.source();

调用source通道的read()方法来读取数据,像这样:


ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = sourceChannel.read(buf);

read()方法返回的int值会告诉我们多少字节被读进了缓冲区。

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java NIO系列教程(十一) Pipe


作者:并发编程网

来源:http://ifeve.com/pipe/


看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
  4. JS中文网,Javascriptc中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,是给开发者用的 Hacker News,技术文章由为你筛选出最优质的干货,其中包括:Android、iOS、前端、后端等方面的内容。目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。

    本文著作权归作者所有,如若转载,请注明出处

    转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com

    标题:第12篇:Java NIO系列教程(十一) Pipe

    链接:https://www.javajike.com/article/1089.html

« 第13篇:Java NIO系列教程(十二) Java NIO与IO
第11篇:Java NIO系列教程(十) Java NIO DatagramChannel»

相关推荐

QR code