美文网首页
nio个人研究

nio个人研究

作者: 在绝望中飘零 | 来源:发表于2018-09-26 09:29 被阅读0次

    nio中的关键是selecter,这是一个选择器,从代码来看实际上就是一个列表,一个包含SelectionKey的阵列,而一个SelectionKey对应于一个通道

    当我们使用this.selector.select();方法,如果有通道在通讯,那么就会有通道写入selecter选择器中.select从阻塞的状态变为执行,后面的代码才会执行,同时在selecter列表中会加入

    已就绪的通道.然后我们一个一个通首的进行处理.

    this.selector.select();

    Iterator selectorKeys = this.selector.selectedKeys().iterator();

    selectorKeys 类型中的属性也没有什么,其实也就是一个通道和一个Object类型,通道代表注册的通道,也就是和通道关联的是那个通道,所有的通道一般都继承

      public abstract SelectableChannel channel();

    而有一个属性为Object可以绑定任何类型对象.

    很显示客户连接服务器时,这时通道会触发事件,然后会向selector写入自己对应的SelectionKey并置相应的操作状态,selecter在select时发现列表有数据后会停止阻塞向下执行.

    因此selecter其实就是不段的循环看看是selectorKeys 列表是否有东西,如果没有就阻塞,如果有就开始处理selectorKeys直到列表为零为至,然后继续阻塞.

    相关文章

      网友评论

          本文标题:nio个人研究

          本文链接:https://www.haomeiwen.com/subject/sefdoftx.html