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()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。
转载自并发编程网 – ifeve.com,本文链接地址: Java NIO系列教程(一) Java NIO 概述,英文原文链接:http://tutorials.jenkov.com/java-nio/overview.html
相关推荐
### Java NIO 系列教程(一):Java NIO 概述 #### 一、引言 Java NIO(New IO)是Java SE 1.4版本引入的一个新的I/O处理框架,它提供了比传统Java IO包更高效的数据处理方式。NIO的核心在于其三大组件:Channels...
Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...
一、Java NIO概述 传统的Java I/O基于流(Stream)和缓冲区(Buffer)的模型,是阻塞式的,即在进行读写操作时会一直等待数据准备好或全部写入完成。而NIO的核心理念在于非阻塞,它允许程序在没有数据可读或可写时继续...
### Java NIO 概述 Java NIO 是 Java 平台的一个重要特性,首次出现在 Java 1.4 版本中。它为 Java 开发者提供了一套全新的 I/O 处理方式,相比于传统的 I/O API,新版本提供了更高效、更灵活的解决方案。本书...
#### 一、Java NIO 概述 Java NIO(New IO)是Java平台提供的一种新的IO操作模式,它首次出现在Java 1.4版本中,并在后续版本中不断完善。Java NIO 的设计目的是为了克服传统Java IO API在面对大量并发连接时存在的...
一、Java NIO概述 Java NIO并非简单的输入输出API的替代,而是提供了一种新的I/O模型。传统IO基于流(Stream)进行数据读写,而NIO基于通道(Channel)和缓冲区(Buffer)。NIO的核心特点是它支持非阻塞I/O操作,可以显著...
#### Java NIO 概述 Java NIO(New IO)是从 Java 1.4 版本开始引入的一种新的 I/O 处理方式,它提供了一种不同于传统 Java IO 的操作模式。NIO 的核心组件包括 Channel(通道)、Buffer(缓冲区)和 Selector...
#### Java NIO 概述 Java NIO (New IO) 是从 Java 1.4 开始提供的一种新的 I/O 处理方式,旨在改进传统 Java IO API 的性能并引入更高效的数据处理机制。Java NIO 主要包括三大核心组成部分:Channels、Buffers 和 ...
#### 一、Java NIO 概述 在深入了解 Java NIO 的工作原理及其使用之前,我们首先来了解一下什么是 Java NIO(New I/O)。Java NIO 是 Java SE 1.4 版本引入的一个全新的 I/O API,用来替代传统的 I/O 类型,即 java...
Java NIO 概述 ---------------- Java NIO 是 Java 编程语言中的一种新的 IO 模式,它与传统 IO 的区别在于它是面向缓冲的,而不是面向流的。Java NIO 在性能和可扩展性方面都得到了很大的提高。 Buffer 概述 ---...
一、Java NIO概述 在Java传统的IO模型中,IO操作基于流(Stream)进行,数据通常是单向流动的,且以字节或字符为单位。而NIO引入了通道(Channel)和缓冲区(Buffer)的概念,数据可以在通道间双向传输,并通过缓冲区进行...
#### 一、Java NIO 概述 Java NIO(New IO),从 Java 1.4 开始引入,是 Java 标准 IO API 的一个补充,提供了与标准 IO 不同的工作方式。Java NIO 的主要特性包括: 1. **基于通道(Channel)和缓冲区(Buffer)的...
Java NIO 概述与实现详解 Java NIO(New IO 或 Non Blocking IO)是从 Java 1.4 版本开始引入的一个新的IO API,可以替代标准的 Java IO API。NIO 支持面向缓冲区的、基于通道的 IO 操作。NIO 将以更加高效的方式...
**Java NIO概述** Java NIO是在Java 1.4版本中引入的新IO模型,主要特点是其非阻塞特性。NIO的核心组件包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。通道是数据传输的途径,如文件通道、网络通道等...
1. **Java NIO概述** Java NIO的核心组件包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。通道是数据传输的路径,可以从通道读取数据到缓冲区,或者从缓冲区写入通道。缓冲区是存储数据的容器,它提供...