UDN-企业互联网技术人气社区

板块导航

浏览  : 482
回复  : 1

[讨论交流] Java NIO 系列教程(十一)Pipe

[复制链接]
genie1003的头像 楼主
发表于 2016-8-4 09:19:18 | 显示全部楼层 |阅读模式
  Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。

  这里是Pipe原理的图示:
2.png

  创建管道

  通过Pipe.open()方法打开管道。例如:
  1. Pipe pipe = Pipe.open();
复制代码

  向管道写数据

  要向管道写数据,需要访问sink通道。像这样:
  1. Pipe.SinkChannel sinkChannel = pipe.sink();
复制代码

  通过调用SinkChannel的write()方法,将数据写入SinkChannel,像这样:
  1. String newData = "New String to write to file..." + System.currentTimeMillis();
  2. ByteBuffer buf = ByteBuffer.allocate(48);
  3. buf.clear();
  4. buf.put(newData.getBytes());

  5. buf.flip();

  6. while(buf.hasRemaining()) {
  7.     sinkChannel.write(buf);
  8. }
复制代码

  从管道读取数据

  从读取管道的数据,需要访问source通道,像这样:
  1. Pipe.SourceChannel sourceChannel = pipe.source();
复制代码

  调用source通道的read()方法来读取数据,像这样:
  1. ByteBuffer buf = ByteBuffer.allocate(48);

  2. int bytesRead = sourceChannel.read(buf);
复制代码

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

  扩展阅读:

  Java NIO系列教程(汇总)

相关帖子

发表于 2016-8-4 09:50:30 | 显示全部楼层
这篇文章介绍了Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取,病分别介绍了相应的原理,简便易懂!
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部