`

java NIO系列资料

阅读更多

原文:

http://ifeve.com/overview/  (Java NIO 概述)

http://ifeve.com/channels/ (Java NIO系列教程(二) Channel

http://ifeve.com/buffers/ (Java NIO系列教程(三) Buffer

 

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

  • Channels
  • Buffers
  • Selectors

虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。因此,在概述中我将集中在这三个组件上。其它组件会在单独的章节中讲到。

 

Channel 和 Buffer

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

Channel和Buffer有好几种类型。下面是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/java-nio-scattergather/ (Java NIO系列教程(四) Scatter/Gather

http://ifeve.com/java-nio-channel-to-channel/  (Java NIO系列教程(五) 通道之间的数据传输

http://ifeve.com/selectors/ (Java NIO系列教程(六) Selector)

http://ifeve.com/file-channel/ (Java NIO系列教程(七) FileChannel

http://ifeve.com/socket-channel/ (Java NIO系列教程(八) SocketChannel

http://ifeve.com/server-socket-channel/ (Java NIO系列教程(九) ServerSocketChannel

http://ifeve.com/datagram-channel/ (Java NIO系列教程(十) Java NIO DatagramChannel

http://ifeve.com/pipe/ (Java NIO系列教程(十一) Pipe

http://ifeve.com/java-nio-vs-io/ (Java NIO系列教程(十二) Java NIO与IO

分享到:
评论

相关推荐

    JavaNIO chm帮助文档

    Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java 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系列教程

    ### Java NIO 系列教程知识点详解 #### Java NIO 概述 Java NIO (New IO) 是从 Java 1.4 开始提供的一种新的 I/O 处理方式,旨在改进传统 Java IO API 的性能并引入更高效的数据处理机制。Java NIO 主要包括三大...

    Java NIO Socket基本

    5. **文件系统API**:NIO还提供了`java.nio.file`包,包含一系列与文件系统交互的类,如Files、Paths等。 Java NIO的主要优势在于非阻塞特性。在BIO中,如果一个线程正在读取或写入数据,那么这个线程将被阻塞,...

    Java NIO 系列教程1

    Java NIO,全称为New Input/Output,是Java平台从1.4版本开始引入的一个新的I/O API,它提供了一种不同于传统Java IO API的I/O工作方式。NIO的主要特点是基于通道(Channel)和缓冲区(Buffer)进行数据读写,并且...

    nio.zip_NIO_NewIO_NIO.c_java NIO chm_java nio

    `java_nio_chm`指的是包含Java NIO相关内容的CHM(Compiled Help Manual)文件,这是一种Windows下的帮助文档格式,通常包含一系列的章节和索引,方便用户查阅。在这个文档中,你可以找到关于Java NIO类库的详细说明...

    Java NIO系列教材1

    Java NIO的这一系列特性使得开发者能更有效地管理I/O操作,特别是在高并发和需要同时处理多个连接的场景下,如网络服务器和大规模数据处理应用。理解并熟练运用NIO的Channel、Buffer和Selector,将有助于提升Java...

    java nio

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种I/O模型,旨在提供一种更高效、更具弹性的I/O处理方式。NIO与传统的BIO(Blocking I/O)模式相比,主要区别在于对I/O...

    java io 与java nio区别

    ### Java IO 与 Java NIO 的区别 在深入探讨Java IO与Java NIO之间的区别之前,我们先简单回顾一下这两种I/O模型的基本概念。 #### 1. Java IO(Blocking IO) Java IO,也称为传统的阻塞式IO或同步阻塞式IO,是...

    java-nio.rar_NIO_java nio

    本资料"java-nio.rar"主要探讨的是如何使用Java NIO实现异步连接池,这在高并发场景下尤其重要,因为它能显著提升系统性能。 1. **NIO基础** - **通道(Channels)**:NIO中的通道类似于流,但它们是双向的,可以...

    Java IO与NIO文档

    Java IO与NIO是Java平台中用于处理输入输出操作的核心技术。它们在处理数据传输、文件操作、网络通信等方面起着至关重要的作用。本篇将深入探讨这两个领域,旨在帮助开发者更好地理解和应用这些概念。 首先,Java ...

    Java nio详细介绍 详细介绍java nio

    - **NIO (New IO)**:随着JDK 1.4的发布,Java引入了一种全新的IO处理方式——NIO,它提供了一系列新特性和改进,以提高IO效率。 NIO的关键特性包括但不限于: - **缓存(Buffer)支持**:为所有的原始类型提供缓存...

    java NIO学习系列 笔记

    Java NIO(New Input/Output)是Java标准库在JDK 1.4版本中引入的一个新特性,它提供了一种不同于传统IO流的高效I/O处理方式。NIO的核心概念包括通道(Channel)和缓冲区(Buffer),这两个组件使得数据以块的形式...

    JAVA NIO 全书 译稿

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种新的I/O模型,是对传统Java IO的一个重要补充。传统的Java IO基于流(Stream)和缓冲区(Buffer)进行操作,通常采用阻塞...

    Java-NIO-系列教程

    ### Java NIO 系列教程知识点详解 #### 一、Java NIO 概述 Java NIO (New IO) 是 Java SE 1.4 版本引入的一种新的输入/输出方式,它提供了一种替代传统的 Java IO 包的方式。Java NIO 主要包括三个核心组成部分:*...

    java nio.doc

    - **`java.nio.channels`**:定义了一系列处理 I/O 的 Channel 接口以及这些接口在文件系统和网络通信上的实现。这是 NIO API 的核心。 - **`java.nio.channels.spi`**:定义了可用来实现 channel 和 selector API ...

Global site tag (gtag.js) - Google Analytics