代号一百万 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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?