Apache Mina学习笔记:Java NIO基础概念
2014-10-29 00:04
357 查看
JDK1.4引入了Java NIO API(Java New IO),Java NIO得到了广泛应用。NIO允许程序进行非阻塞IO操作。java.nio.*
包括以下NIO基本结构:
Buffer - 数据的容器;
Chartsets - 针对字节与Unicode的容器转换器;
Channels - 代表IO操作的实体连接;
Selectors - 提供可选择的、可复用的非阻塞IO;
Java NIO引入了两个新的概念:通道Channel和选择器Selector;
Channels:是服务端和客户端进行通信的接口-----原来是直接的IO操作,客户端发信息给服务端,服务端从OutputStream中读取,然后向InputStream中写数据;现在则直接从Channel中读取或写入数据;
Selectors:是一个多路复用器:所有的通道向它注册事件,因此它管理了所有的通道信息,并轮询各个通道的状态,一旦某个通道某事件发生(比如有数据读或可以写入数据),则通知该管道对应事件的处理器去处理它;
客户端连接上服务端后,首先每个客户端都要与服务端建立一个通道(SocketChannel);然后每个通道向选择器(Selector)注册事件,注册器会轮询查看每个通道是否有事件发生,一旦某通道有事件发生,比如Client1的SocketChannel有数据了,就触发了读就绪事件,可以进行读取的操作啦。
我绘制了一幅草图,方便大家理解:
包括以下NIO基本结构:
Buffer - 数据的容器;
Chartsets - 针对字节与Unicode的容器转换器;
Channels - 代表IO操作的实体连接;
Selectors - 提供可选择的、可复用的非阻塞IO;
Java NIO引入了两个新的概念:通道Channel和选择器Selector;
Channels:是服务端和客户端进行通信的接口-----原来是直接的IO操作,客户端发信息给服务端,服务端从OutputStream中读取,然后向InputStream中写数据;现在则直接从Channel中读取或写入数据;
Selectors:是一个多路复用器:所有的通道向它注册事件,因此它管理了所有的通道信息,并轮询各个通道的状态,一旦某个通道某事件发生(比如有数据读或可以写入数据),则通知该管道对应事件的处理器去处理它;
客户端连接上服务端后,首先每个客户端都要与服务端建立一个通道(SocketChannel);然后每个通道向选择器(Selector)注册事件,注册器会轮询查看每个通道是否有事件发生,一旦某通道有事件发生,比如Client1的SocketChannel有数据了,就触发了读就绪事件,可以进行读取的操作啦。
我绘制了一幅草图,方便大家理解:
相关文章推荐
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.10)
- java学习笔记2--基础概念
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.3)
- 黑马程序员_JAVA网络编程基础概念+URL类学习笔记
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.8-4.1.9)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.11-4.1.12)
- Java学习笔记之语言基础――Java代码安全的概念
- 【Java没基础】I/O学习笔记(二)-NIO
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.6-4.1.7)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.1)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.2)
- J2EE学习笔记一:相关概念和基础知识
- Java学习笔记(八、数据库编程基础)
- Java NIO 学习笔记 selector 行为机制分析(select操作 cancel操作)
- [转]CoreJava学习笔记_Java语法基础
- Java基础学习笔记
- JAVA语言学习笔记之JAVA语言基础
- Java学习笔记(七、网络编程基础)
- 数据基础概念-学习笔记
- java基础学习笔记原始类型变量赋值与非原始变量赋值