代号一百万 2016-05-23 13:30 采纳率: 0%
浏览 3445

java nio为什么会在Selector.select()函数一直等待

  while (true) {
            // 选择一组键
            selector.select();
            // 返回此选择器的已选择键集
            Set<SelectionKey> selectionKeys = selector.selectedKeys();
            Iterator<SelectionKey> iterator = selectionKeys.iterator();
            // 遍历对应的 SelectionKey 处理
            while (iterator.hasNext()) {
                SelectionKey selectionKey = (SelectionKey) iterator.next();
                iterator.remove();
                if(!selectionKey.isValid()){
                    continue;
                }
                // 判断此键的通道是否已完成其套接字连接操作
                if (selectionKey.isConnectable()) {
                    connected(selectionKey);
                }
                // 判断是否连接可读操作
                else if (selectionKey.isReadable()) {
                    readMessage(selectionKey);
                }
                // 判断是否连接可写操作
                else if (selectionKey.isWritable()) {
                    writeMessage(selectionKey);
                }
            }
            selectionKeys.clear();
        }
 private void connected(SelectionKey selectionKey) throws IOException {
       SocketChannel client = (SocketChannel) selectionKey.channel();
        // 判断该通道是否进行连接过程、完成连接过程
        if (client.isConnectionPending()) {
            if (client.finishConnect()) {
                client.write("hello"); // 将数据写入该通道
                client.register(selector, SelectionKey.OP_READ);
            }
        }
    }

代码如上,为什么每次,执行connected(SelectionKey selectionKey) 过后循环到selector.select();后就一直等待?

  • 写回答

1条回答 默认 最新

  • bdmh 移动开发领域优质创作者 2016-05-23 13:38
    关注

    对啊,等到直到有链接进来,就会继续执行了

    评论

报告相同问题?

悬赏问题

  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败