当调用selector.select()时会阻塞:

This method performs a blocking selection operation. It returns only after at least one channel is selected, this selector's wakeup method is invoked, or the current thread is interrupted, whichever comes first. 

其返回值有可能为0:

The number of keys, possibly zero,whose ready-operation sets were updated

另请见,解释了select后返回值为0,但selector.selectedKeys()不为空:Java NIO Selector select() returns 0 although channels are ready

selector.selectedKeys()返回的Set<SelectionKey>需要删除SelectionKey,原因请见:Why the key should be removed in `selector.selectedKeys().iterator()` in java nio?

另外,Set<SelectionKey>删除SelectionKey需要使用iterator,这个在第一个链接里也有原因

转载于:https://www.cnblogs.com/drizzlewithwind/p/6676172.html

selector.select()和selector.selectedKeys()相关推荐

  1. Selector.select()

    Netty的底层依然是依赖于JDK的NIO . 开发NIO服务端的代码如下所示 import java.io.IOException; import java.net.InetSocketAddres ...

  2. Selector.select

    创建Selector Selector selector = Selector.open(); selector.select() select() = select(0) = lockAndDoSe ...

  3. 基础10 多进程、协程(multiprocessing、greenlet、gevent、gevent.monkey、select、selector)...

    1.多进程实现方式(类似于多线程) 1 import multiprocessing 2 import time,threading 3 4 def thread_run():#定义一个线程函数 5 ...

  4. Selector选择器概述||Selector选择器组合使用

    Selector选择器组合使用

  5. android selector 开关,android selector 状态切换 以及动画

    状态切换 创建位置 drawable 还有很多属性 可以设置 自己试试 动画效果 文件位置 在res/animator下创建动画文件 android:duration="@android:i ...

  6. 完全理解NIO Selector

    一.Selector是什么 Selector是一个或多个SelectableChannel对象的多路复用器. 二.如何创建一个Selector对象 一个selector对象可以通过调用Selector ...

  7. 小师妹学JavaIO之:用Selector来发好人卡

    文章目录 简介 Selector介绍 创建Selector 注册Selector到Channel中 SelectionKey selector 和 SelectionKey 总的例子 总结 简介 NI ...

  8. java之NIO(Channel,Buffer,Selector)

    java之NIO 1 什么是NIO Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API.NIO支持面向缓冲区的.基于通道的IO操作 ...

  9. JAVA NIO:NIO与OIO的对比以及Channel通道、Selector选择器、Buffer缓冲区的介绍 高并发

    文章目录 二 Java NIO (一)NIO对比OIO (二)概述三个核心组件 Channel通道 Selector选择器 Buffer缓冲区 (三)Buffer详解 1 Buffer类 2 四个属性 ...

最新文章

  1. 性能指标:QPS、TPS、RT、吞吐量
  2. ESX中的Linux热添加磁盘
  3. 渗透攻击(NT/2000系统)
  4. 投资计算机方面的策略构建,金融投资简单的策略分享和构建策略的基本思路
  5. P2685 [TJOI2012]桥
  6. 【2016年第1期】农业大数据研究生培养模式探索
  7. Facebook 神经上采样技术,用于实时渲染
  8. [转载] Java——System.exit()用法及个人理解
  9. linux 低功耗模式,stm32的低功耗模式:
  10. 量子多体理论怎么样理解,多体系统的量子理论
  11. qqpcmgr_docpro 这个隐藏文件无法删除的问题解决方法
  12. Jenkins版本回退
  13. PAKDD 21: GRAPH INFOCLUST 明尼苏达
  14. 微信公众号开发-使用微信网页授权进行登录并加上过滤器判断是否已登录
  15. 校园网环境下的微信同步
  16. iOS 中使用 Mobile Installation 安装 IPA(使用iTunes/AppStore一样的安装API)
  17. 人只需要成功一次就够了
  18. codevs 2703 奶牛代理商 XII
  19. linux升级系统内核
  20. java计算机毕业设计手机电子商城源代码+数据库+系统+lw文档

热门文章

  1. 个人计算机的系统设计,计算机毕业论文设计——个人日志系统的设计与实现.doc...
  2. Citrix NetScaler 全局负载均衡解决方案
  3. 財智V6.0(完美破解序列号特别版)
  4. Java中负数的右移
  5. scrapy框架下设置代理ip
  6. DNS劫持之局域网DNS劫持
  7. Hive报错:stage24 contains a task of very large size;the maximum recommended task size is 100kb
  8. Dou学网-影视号起号视频教程
  9. 【一分钱做公益】宝鸡上善公益为首批支付宝公益消费捐爱心商户集中授牌
  10. 安卓手机主题软件_最强安卓手机垃圾清理软件!