`
85977328
  • 浏览: 1903654 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java NIO(十一)Pipe

    博客分类:
  • nio
 
阅读更多
Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。
这里是Pipe原理的图示:


创建管道
通过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 = inChannel.read(buf);

read()方法返回的int值会告诉我们多少字节被读进了缓冲区。
  • 大小: 7.6 KB
分享到:
评论

相关推荐

    JavaNIO chm帮助文档

    Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/...Java NIO系列教程(十一) Pipe Java NIO系列教程(十二) Java NIO与IO

    Java NIO英文高清原版

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于替代标准I/O(BIO)模型的一种新机制。NIO在Java 1.4版本引入,提供了更高效的数据处理和通道通信方式,特别适用于高并发、大数据...

    java NIO实例

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种新的I/O模型,它为Java应用程序提供了更高效的数据传输方式。传统的Java I/O模型(BIO)在处理大量并发连接时效率较...

    Java NIO Socket基本

    4. **管道(Pipe)**:在某些特定情况下,两个线程之间可以使用`java.nio.Pipe`进行单向数据传递。 5. **文件系统API**:NIO还提供了`java.nio.file`包,包含一系列与文件系统交互的类,如Files、Paths等。 Java ...

    一个java NIO的例子

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新技术。在传统的Java IO模型中,读写操作是阻塞的,即当调用read或write方法时,线程会等待数据准备好或...

    Java.NIO资源下载资源下载

    根据提供的文件信息,我们可以提取并总结出关于Java NIO(New Input/Output)的重要知识点。 ### Java NIO 概述 Java NIO 是 Java 平台的一个重要特性,首次出现在 Java 1.4 版本中。它为 Java 开发者提供了一套...

    java nio示例代码

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一个新特性,旨在提供一种比传统的IO(I/O)模型更高效、性能更好的处理输入和输出的方式。传统的Java IO基于流(Stream)...

    Java NIO Ron Hitchens著

    6. **管道(Pipes)**:在NIO中,Pipe提供了一种单向的数据传输通道,用于在两个线程之间传递数据。 7. **多路复用(Multiplexing)**:通过选择器,NIO可以实现I/O的多路复用,即一个线程可以处理多个连接,显著...

    高手使用Java NIO编写高性能的服务器

    6. **管道(Pipe)**:NIO还支持管道通信,允许两个线程之间直接交换数据,无需经过主内存,提高了数据传输效率。 7. **scatter/gather(分散/聚集)**:NIO允许数据从多个缓冲区分散写入一个通道,或者从一个通道...

    java-nio.rar_NIO_java nio

    - `java.nio.channels.Pipe`:用于创建管道,实现进程间通信。 - `java.nio.channels.AsynchronousSocketChannel` 和 `AsynchronousServerSocketChannel`:提供异步的TCP连接支持。 - `java.nio.file.Paths` 和 `...

    JAVA NIO 异步通信模板服务端

    **JAVA NIO 异步通信模板服务端** Java NIO(New Input/Output)是Java在J2SE 1.4版本中引入的一个新特性,它提供了与标准I/O完全不同的编程模型,尤其是在处理大量并发连接时,NIO展现出了更高的效率。本模板...

    Java NIO原理分析及代码实例

    Java NIO(New IO)是Java 1.4版本引入的一个新API,全称为Non-blocking Input/Output,它提供了一种不同于传统IO的编程模型,传统IO基于块I/O,而NIO则基于通道(Channel)和缓冲区(Buffer)进行数据传输。NIO的...

    javaNIO很好的资料

    ### Java NIO 相关知识点详解 #### Java NIO 概述 Java NIO(New IO)是从 Java 1.4 版本开始引入的一种新的 I/O 处理方式,它提供了一种不同于传统 Java IO 的操作模式。NIO 的核心组件包括 Channel(通道)、...

    JAVA NIO 学习资料

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从JDK 1.4版本开始引入的一种新的IO模型,它为Java应用程序提供了更高效的数据传输方式,尤其适用于高并发、大数据量的网络服务。与传统的IO...

    java nio 尚硅谷 12讲 new

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新技术。尚硅谷的12讲Java NIO课程,旨在深入浅出地讲解这一重要概念,帮助开发者提升程序的性能和效率。...

    Java语言基础教程-Java NIO流篇1

    此外,NIO还包含了文件通道(FileChannel)、管道(Pipe)、字符集(Charset)等概念。文件通道可以从文件直接读写,而管道则可以实现线程间的通信。字符集处理则解决了在不同编码格式之间转换的问题。 总结来说,...

    java-instantcode-developing.rar_java nio

    7. **管道(Pipe)**:管道是Java NIO中用于线程间通信的一种机制,它允许两个线程之间通过管道进行单向数据传输。 8. **字符集转换**:Java NIO提供Charset类和CharsetDecoder/CharsetEncoder类,支持多种字符集的...

    java NIO socket聊天

    此外,Java NIO还引入了`Pipe`和`FileChannel`等特性,使得进程间通信和文件操作也变得更加灵活。`Pipe`允许两个线程之间通过管道进行单向数据传输,而`FileChannel`提供了直接内存映射到文件的能力,提高了大文件...

Global site tag (gtag.js) - Google Analytics