非阻塞IO(NIO)常用API

1.NIO的职责

Selector负责事件分发,当有事件到达时,Channel向Selector注册,并通过Buffer进行数据交互

2.Selector注册事件

API

  • SelectorKey.OP_CONNECT 连接就绪
  • SelectorKey.OP_ACCEPT 接收就绪 
  • SelectorKey.OP_READ 读就绪(新数据到达)
  • SelectorKey.OP_WRITE 写就绪

使用流程

  • open() 开启一个选择器,可以给注册器注册需要关注的事件
  • register() 将一个Channel注册到选择器,将选择器触发对应关注事件时回调到Channel中,处理相关数据
  • select()/selectNow() 一个通道Channel,处理一个当前可用、待处理的通道的数据,即阻塞等待Selector上的事件
  • selectdKeys() 返回Selector上所有就绪状态的事件
  • wakeUp() 唤醒一个处于select状态的选择器
  • close() 关闭一个选择器,注销所有关注事件

注意事项

  • 注册到选择器的通道必须为非阻塞状态
  • FileChannel不能用于Selector 因为FileChannel不能切换为非阻塞模式;套接字通道可以

3. SelectionKey选择键

每个Channel向Selector注册时,都将会创建一个selectionKey作为标识

  • Interest集合:所有注册事件的集合
  • Ready集合:所有就绪事件的集合
  • Channel通道
  • Selector选择器
  • obj附加值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值