NIO学习

  • 姓名 :Non-blocking I/O 或 New I/O
  • 出生: JDK 1.4
  • 职务: 高并发网络服务器支持岗

NIO网络模型 :

NIO学习


NIO核心 :

  • Channel : 通道
  • Buffer : 缓冲区
  • Selector : 选择器或多路复用器
Channel 简介
  • 双向性
  • 非阻塞性
  • 操作唯一性
Channel 实现
  • 文件类 : FileChannel
  • UDP类 : DatagramChannel
  • TCP类 : ServerSocketChannel / SocketChannel
    NIO学习
Buffer 简介
  • 作用 : 读写 Channel 中数据
  • 本质 : 一块内存区域
Buffer 属性
  • Capacity : 容量
  • Position : 位置
  • Limit : 上限
  • Mark : 标记
Buffer 使用

NIO学习
2. NIO学习
3.
NIO学习
4.
NIO学习
5.
NIO学习
6.
NIO学习
7.
NIO学习

Selector 简介
  • 作用 : I/O就绪选择
  • 地位 : NIO网络编程的基础
Selector 使用

NIO学习

SelectionKey 使用
  • 四种就绪状态常量
  • 有价值的属性

NIO编程实现步骤:

  • 第一步 : 创建 Selector
  • 第二步 : 创建 ServerSocketChannel ,并绑定监听端口
  • 第三步 : 将 Channel设置为非阻塞模式
  • 第四步 : 将 Channel注册到 Selector上,监听连接事件
  • 第五步 : 循环调用 Selector的 select方法,检测就绪情况
  • 第六步 : 调用 selectedKeys方法获取就绪 channe|集合
  • 第七步 : 判断就绪事件种类,调用业务处理方法
  • 第八步 : 根据业务需要决定是否再次注册监听事件,重复执行第三步操作

原生的NIO网络编程缺陷

  • 麻烦 : NIO类库和API繁杂
  • 心累 : 可靠性能力补齐,工作量和难度都非常大
  • 有坑 : Selector空轮询,导致CPU100%

相关文章: