当调用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. 组合数学题 Codeforces Round #108 (Div. 2) C. Pocket Book
  2. [USACO 08JAN]Haybale Guessing
  3. java数据从本地文件中取出_java 从数据库取数据并存入本地文本中
  4. 将一个数组拼接成一个指定字符串返回
  5. 常用软件包和环境配置(机器学习)
  6. myEclipse怎样将程序部署到tomcat(附录MyEclipse调试快捷键)
  7. pythonlist反转_Python 列表反转显示的四种方法
  8. HTML学习---HTML状态码
  9. 《算法导论》.pdf
  10. 如何在iPhone和Android上使用Instagram效果
  11. WinDriver 安装
  12. Pytorch对梯度进行rescale
  13. 孙子兵法始计篇读后感&心得(上)
  14. edgy trees_在Ubuntu Edgy上安装TrueCrypt
  15. oracle 数据库模式对象,索引,序列,同义词,查看用户拥有的表,聚簇,数据库链接
  16. 周鸿祎的“花房上市”执念
  17. 毕业设计-基于深度学习的实例分割研究
  18. SQL-常用SQL语句
  19. linux自动电梯设计,基于嵌入式Linux电梯控制系统
  20. zoj3380 Patchouli's Spell Cards

热门文章

  1. simulink中gnd无法连线问题
  2. 给无符号数赋值负数(有符号数)的理解(unsigned\signedf)
  3. Python读取文件时,出现SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 2-3
  4. 使用Django创建bolg的后台页面 (精简版)NO.2
  5. KVM之Nova通过libvirt管理QEMU/KVM虚机
  6. 同样是保存模型,model.save()和model. save_weights ()有何区别
  7. 机房重构之权限判断登录窗体
  8. Windows 程序设计 笔记
  9. 2021年慈溪横河中学高考成绩查询,喜报|2018年高考喜报频传,慈溪高考再创新辉煌...
  10. Linux 指令大全(2)(转)