很简单,搞明白下面3个组件就行了 ===== SelectionKey ===== 聚合了 Selector, Channel, interestOps(感兴趣的事件) 信息 ===== Selector ===== * 选择器,监听操作系统的读写状态是否ready。 * 记录了和自己相关的所有 SelectionKey。(多个channel可以注册到同一个Selector上) * 如果自己关闭:触发所有和自己相关的Channle 自杀 (所以一个channel不能注册到多个channel上) ===== Channle (SocketChannel)===== * 一个读写通道 * 记录了和自己相关的所有 SelectionKey * 如果通道关闭:触发所有 SelectionKey.cancel()操作。告诉Selector和我这个channle相关的SelectionKey都失效了。后续不需要在监听这些事件了 nio例子参见 [[java_nio例子]]