netty学习(5)--NIO基础知识
来源:互联网 发布:淘宝上的好评怎样删除 编辑:程序博客网 时间:2024/06/05 14:23
NIO是new io的简称,但是nio类库的目标就是让Java支持非阻塞I/O,所以NIO也被解释为非阻塞IO(Non-block I/O)。
与Socket和ServerSocket类相对应,NIO也提供了SocketChannel和ServerSocketChannel两种不同的套接字通道实现,
这两种新增的通道支持阻塞和非阻塞两种形式。阻塞模式使用简单,但是性能和可靠性不好,非阻塞模式和阻塞模式正
好相反,使用复杂,三十性能和可靠性比较完善。开发人员根据需求自行选择!!
一般情况下:
低负载、低并发的应用可以选择同步阻塞IO,降低编程复杂度
高负载,高并发的应用需要选择NIO来提高性能和可靠性。
NIO弥补了原来同步阻塞IO的不足,在JAVA中提供了高速的,面向块的IO,以块的形式处理数据,提高传输效率
NIO的相关概念:
缓冲区Buffer
在NIO中,所有的数据搜时用缓冲区处理的,在读取数据时,它是直接读取到缓冲区中的,在写入数据时,写入到
缓冲区,任何时候访问NIO中的数据,都是通过缓冲区提供对数据的结构化访问以及读写位置(limit)等信息
NIO中的缓冲区有:
ByteBuffer : 字节缓冲区
CharBuffer:字符缓冲区
ShortBuffer : 短整形缓冲区
IntBuffer:整形缓冲区
LongBuffer : 长整形缓冲区
FloatBuffer:浮点型缓冲区
DoubleBuffer:双精度浮点型缓冲区
通道Channel
Channel是一个通道,可以通过它读取和写入数据,它就像自来水管一样。网络通过Channel读取和写入,通道是
双向的,流只是一个方向上的,而且通道可以用于读、写或者同时用于读写。
Channel分为两大类:分别是用于网络读写的SelectableChannel和用于文件操作的FileChannel。
ServerSocketChannel和SocketChannel都是SelectableCHannel的子类!!
多路复用器Selector
多路复用器Selector是java nio的编程基础,多路复用器提供选择已经就绪的任务的能力。通俗来说就是:Selector
会不断的轮询注册在其上的Channel,如果某个Channel上面有新的TCP连接接入、读写事件,这个Channel就处于就绪状态
,会被Selector轮询出来,然后通过SelectionKey可以获取就绪的Channel的集合,进行后续操作!!!
注:一个多路复用器Selector可以同时轮询多个Channel
- netty学习(5)--NIO基础知识
- Netty学习 netty nio编程
- netty学习(6)---NIO服务器端实现
- Netty学习系列(二)-- NIO介绍
- NIO-netty-入门学习
- Netty学习-01-Nio
- (socket-nio-netty学习-1)socket,NIO,AIO基本概念
- Netty 基础知识学习
- Netty学习3-NIO详解
- nio学习之netty入门(1)---发送字符串
- nio学习之netty入门(3)---发送对象
- Netty学习之NIO---通道Channel(一)
- NIO 基础知识学习
- 一起学Netty(十七)netty源码学习之大话java NIO
- nio学习之netty入门(2)---netty中handler的执行顺序
- Netty 学习(5) Netty Example--echo
- Netty源码学习-Java-NIO-Reactor
- Netty源码学习-Java-NIO-Reactor
- 数组
- lintcode-单词接龙-120
- Java中Math用法
- Dart基础学习02--变量及内置类型
- 黑马程序员——Java基础——面向对象的特征(一)
- netty学习(5)--NIO基础知识
- Socket编程
- 关于iOS中的strong,weak,assign,copy,retain等关键字的总结
- next数组介绍
- 二叉树的梳理
- 9、编程珠玑笔记九代码调优
- RMQ算法
- 希尔排序
- 文本中显示图片的方法