当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

nio框架中的多个Selector构造[Java编程]

赞助商链接



  本文“nio框架中的多个Selector构造[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

随着并发数目的提高,传统nio框架采取一个Selector来支持大量衔接事件的 管理和触发已经碰到瓶颈,因此目前各种nio框架的新版本都采取多个 Selector 并存的构造,由多个Selector均衡地去管理大量衔接.这里以Mina和Grizzly的实现为例.

在Mina 2.0中,Selector的管理是由 org.apache.mina.transport.socket.nio.NioProcessor来处理,每个 NioProcessor对象保存一个Selector,负责具体的select、wakeup、channel的 注册和撤消、读写事件的注册和判断、实际的IO读写操作等等,核心代码以下:

public NioProcessor(Executor executor) {
         super(executor);
         try {
             // Open a new selector
             selector = Selector.open();
         } catch (IOException e) {
             throw new RuntimeIoException("Failed to  open a selector.", e);
         }
     }

     protected int select(long timeout) throws Exception  {
         return selector.select(timeout);
     }

     protected boolean isInterestedInRead(NioSession session)  {
         SelectionKey key = session.getSelectionKey ();
         return key.isValid() &&  (key.interestOps() & SelectionKey.OP_READ) != 0;
     }

     protected boolean isInterestedInWrite(NioSession  session) {
         SelectionKey key = session.getSelectionKey ();
         return key.isValid() &&  (key.interestOps() & SelectionKey.OP_WRITE) != 0;
     }
     protected int read(NioSession session, IoBuffer buf)  throws Exception {
         return session.getChannel().read(buf.buf());
     }

     protected int write(NioSession session, IoBuffer buf,  int length) throws Exception {
         if (buf.remaining() <= length) {
             return session.getChannel().write(buf.buf ());
         } else {
             int oldLimit = buf.limit();
             buf.limit(buf.position() + length);
             try {
                 return session.getChannel().write (buf.buf());
             } finally {
                 buf.limit(oldLimit);
             }
         }
     }


  以上是“nio框架中的多个Selector构造[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • nio框架中的多个Selector构造
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .