用户工具


很简单,搞明白下面3个组件就行了

SelectionKey

聚合了 Selector, Channel, interestOps(感兴趣的事件) 信息

Selector

  • 选择器,监听操作系统的读写状态是否ready。
  • 记录了和自己相关的所有 SelectionKey。(多个channel可以注册到同一个Selector上)
  • 如果自己关闭:触发所有和自己相关的Channle 自杀 (所以一个channel不能注册到多个channel上)

Channle (SocketChannel)

  • 一个读写通道
  • 记录了和自己相关的所有 SelectionKey
  • 如果通道关闭:触发所有 SelectionKey.cancel()操作。告诉Selector和我这个channle相关的SelectionKey都失效了。后续不需要在监听这些事件了

nio例子参见 java_nio例子