三javanio中Selector

编程

三 java nio中Selector

  • 为什么要使用selector

    单线程,减少了线程切换带来的开销

  • 创建selector

    Selector.open()

  • 如何通过selector来切换通道 ?

    创建selector后,将通道绑定在selector上,也就是注册

channel.register(...) 表示对通道上的什么操作感兴趣channel.register(...) 表示对通道上的什么操作感兴趣

四种不同类型

  • Connect
  • Accept
  • Read
  • Write

    SelectionKey.OP_ACCEPT;

    SelectionKey.OP_CONNECT;

    SelectionKey.OP_READ;

    SelectionKey.OP_WRITE;

如果对多种操作感兴趣,可以用‘位或’将常量联系起来

SelectionKey.OP_READ|SelectionKey.OP_WRITE

  • SelectionKey是什么?

    在register后返回一个对象类型就是SelectionKey,对象中包含的属性有:

    • interest集合

    可以确定对channel中哪些类型感兴趣

    • ready集合

    是通道已经准备就绪的操作集合

    • Channel对象

    selectionKey.channel();

    • Selector对象

      selectionKey.selector();

    • 附加属性对象

      register中第三个参数可以作为附加对象属性

Selector的方法

select()返回int值表示有多少通道已经就绪

以上是 三javanio中Selector 的全部内容, 来源链接: utcz.com/z/516819.html

回到顶部