`
youyu4
  • 浏览: 440133 次
社区版块
存档分类
最新评论

java NIO 之 基础

 
阅读更多

java NIO 之 基础

 

 

Java NIO 由以下几个核心部分组成:

 

  • Channels
  • Buffers
  • Selectors

      虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。

 

 

 

 

Channel 和 Buffer

 

基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。这里有个图示:


 

JAVA NIO中的一些主要Channel的实现:

 

  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel

注意:这些通道涵盖了UDP 和 TCP 网络IO,以及文件IO。

 

 

Java NIO里关键的Buffer实现:

 

  • ByteBuffer
  • CharBuffer
  • DoubleBuffer
  • FloatBuffer
  • IntBuffer
  • LongBuffer
  • ShortBuffer

注意:这些Buffer覆盖了你能通过IO发送的基本数据类型:byte, short, int, long, float, double 和 char。Java NIO 还有个 MappedByteBuffer,用于表示内存映射文件。

 

 

 

 

Selector

 

Selector允许单线程处理多个 Channel。如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。例如,在一个聊天服务器中。

 

这是在一个单线程中使用一个Selector处理3个Channel的图示:



 

      要使用Selector,得向Selector注册Channel,然后调用它的select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。

 

 

 

参考:http://ifeve.com/overview/

 

  • 大小: 9 KB
  • 大小: 8.8 KB
分享到:
评论

相关推荐

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

    首先,我们要理解Java NIO的核心组件之一——流。在Java的IO体系中,流是数据传输的抽象,它代表了数据的流向,可以是输入流(InputStream)或输出流(OutputStream)。然而,NIO中的流与传统的IO流有所不同,它们...

    java NIO技巧及原理

    **Java NIO基础概念:** 1. **通道(Channel)**:类似于流,但可以双向传输数据,如FileChannel、SocketChannel等。 2. **缓冲区(Buffer)**:用于在通道和应用程序之间存储数据,提供了更高效的访问方式。 3. **...

    Java.NIO资源下载资源下载

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

    java NIO推送实例

    1. **Java NIO基础** - **通道(Channels)**:Java NIO 提供了多种通道,如文件通道、套接字通道等,它们代表不同类型的I/O操作。 - **缓冲区(Buffers)**:数据在通道和应用程序之间传输时会存储在缓冲区中,...

    java NIO详细教程

    - **缓冲区(Buffer)**:缓冲区是Java NIO中数据读写的基础单元。根据数据类型的不同,Java NIO 提供了多种缓冲区: - **ByteBuffer**:用于基本字节数据的缓冲。 - **CharBuffer**:用于字符数据的缓冲。 - **...

    java nio示例代码

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一个新特性,旨在提供一...在学习过程中,你可以逐步深入,从基础的Buffer操作到复杂的Selector机制,掌握Java NIO的精髓。

    java nio im(server+client)

    1. **NIO基础概念** - **通道(Channel)**:在NIO中,数据是通过通道进行传输的。通道类似于流,但可以同时进行读写操作。 - **缓冲区(Buffer)**:数据在传输前会先存储在缓冲区中,缓冲区提供了一种方式来管理...

    Java NIO学习资料+代码.zip

    - **缓冲区(Buffers)**:缓冲区是数据存储的地方,它是Java NIO的基础。所有数据都必须通过缓冲区进行读写,缓冲区提供了一种有限的、可控制的数据访问方式。常见的缓冲区类型有ByteBuffer、CharBuffer、IntBuffer...

    NIO与零拷贝_javanio_nio和零拷贝_

    1. **NIO基础** - **通道(Channels)**:通道类似于流,但它是双向的,可以读也可以写。常见的通道有FileChannel、SocketChannel、ServerSocketChannel等。 - **缓冲区(Buffers)**:NIO的核心组件,用于存储...

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

    理解并熟练掌握这些内容,将为后续深入学习NIO的其他高级特性,如选择器、多路复用等打下坚实的基础。在实际开发中,NIO可以帮助我们构建更加高效、灵活的网络服务,尤其在处理大量并发连接时,NIO的优势更为明显。

    Java NIO系列教程(一) Java NIO 概述

    ### Java NIO 系列教程(一):Java NIO 概述 #### 一、引言 Java NIO(New IO)是Java SE 1.4版本引入的一个新的I/O处理框架,它提供了比传统Java IO包更高效的数据处理方式。NIO的核心在于其三大组件:Channels...

    Java NIO 英文文字版

    书中的内容涵盖了NIO的新特性,基础和高级I/O概念,二进制I/O和新的缓冲区类,内存映射文件和文件锁定,字符I/O:包括编码、解码和转换字符数据,正则表达式以及新的`java.util.regex`包,以及使用`java.nio`进行多...

    JAVA nio的一个简单的例子

    Java NIO,全称为Non-...这个简单的例子展示了如何使用NIO进行基本的字符串通信和哈希计算,为理解和应用Java NIO提供了基础。在实际项目中,我们可以根据需求进一步优化,例如添加异常处理、使用多线程处理连接等。

    java nio 聊天室源码

    1. **Java NIO基础** - **通道(Channel)**:在NIO中,数据是通过通道进行传输的,如SocketChannel、ServerSocketChannel、FileChannel等。它们是双向的,可以读也可以写。 - **缓冲区(Buffer)**:NIO的核心组件,...

    nio.zip_NIO_NewIO_NIO.c_java NIO chm_java nio

    NIO(New IO)是Java平台中用于处理输入/输出操作的一种高级API,它在Java 1.4版本中引入,以替代传统的IO流模型。NIO提供了更高效、更灵活的数据传输方式,尤其适用于高并发和大数据量的场景。 在Java的NIO体系中...

Global site tag (gtag.js) - Google Analytics