1.BIO网络模型
1.1 基于阻塞IO实现的。
1.2 BIO网络模型缺点
(1)阻塞式I/O模型
(2)弹性伸缩能力差
(3)多线程耗资源
2. NIO网络模型
2.1 基于非阻塞I/O实现的。
2.2 NIO网络模型的优点
(1)非阻塞式I/O模型
(2)弹性伸缩能力强
(3)单线程节省资源
3. NIO网络编程详解
3.1 NIO核心类之Channel
3.1.1 Channel特性:
(1)双向性
(2)非阻塞性
(3)操作唯一性
3.1.2 Channel实现
(1)文件类:FileChannel
(2)UDP类:DatagramChannel
(3)TCP类:ServerSocketChannel / SocketChannel.
3.2 NIO核心类之Buffer
3.2.1 Buffer简介
作用:读写Channel中数据
本质:一块内存区域
3.2.2 Buffer属性
Capacity:容量
Position:位置
Limit:上限
Mark:标记
3.2.3 Buffer使用
3.3 NIO核心类之Selector
3.3.1 Selector简介
作用:I/O就绪选择
地位:NIO网络编程的基础
3.3.2 Selector使用
3.4 NIO编程实现步骤
(1)创建Selector
(2)创建ServerSocketChanner,并绑定监听端口
(3)将Channel设置为非阻塞模式
(4)将Channel注册到Selector上,监听连接事件
(5)循环调用Selector的select方法,检测就绪情况
(6)调用selectedKeys方法获取就绪channel集合
(7)判断就绪事件种类,调用业务处理方法
(8)根据业务需要决定是否再次注册监听事件,重复执行第三步操作。
4 NIO网络编程缺陷
(1)麻烦:NIO类库和API繁杂
(2)心累:可靠性能力补齐,工作量和难度都非常大
(3)有坑:Selector空轮询,导致CPU 100%