selector.select()和selector.selectedKeys()
当调用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()相关推荐
- Selector.select()
Netty的底层依然是依赖于JDK的NIO . 开发NIO服务端的代码如下所示 import java.io.IOException; import java.net.InetSocketAddres ...
- Selector.select
创建Selector Selector selector = Selector.open(); selector.select() select() = select(0) = lockAndDoSe ...
- 基础10 多进程、协程(multiprocessing、greenlet、gevent、gevent.monkey、select、selector)...
1.多进程实现方式(类似于多线程) 1 import multiprocessing 2 import time,threading 3 4 def thread_run():#定义一个线程函数 5 ...
- Selector选择器概述||Selector选择器组合使用
Selector选择器组合使用
- android selector 开关,android selector 状态切换 以及动画
状态切换 创建位置 drawable 还有很多属性 可以设置 自己试试 动画效果 文件位置 在res/animator下创建动画文件 android:duration="@android:i ...
- 完全理解NIO Selector
一.Selector是什么 Selector是一个或多个SelectableChannel对象的多路复用器. 二.如何创建一个Selector对象 一个selector对象可以通过调用Selector ...
- 小师妹学JavaIO之:用Selector来发好人卡
文章目录 简介 Selector介绍 创建Selector 注册Selector到Channel中 SelectionKey selector 和 SelectionKey 总的例子 总结 简介 NI ...
- java之NIO(Channel,Buffer,Selector)
java之NIO 1 什么是NIO Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API.NIO支持面向缓冲区的.基于通道的IO操作 ...
- JAVA NIO:NIO与OIO的对比以及Channel通道、Selector选择器、Buffer缓冲区的介绍 高并发
文章目录 二 Java NIO (一)NIO对比OIO (二)概述三个核心组件 Channel通道 Selector选择器 Buffer缓冲区 (三)Buffer详解 1 Buffer类 2 四个属性 ...
最新文章
- 组合数学题 Codeforces Round #108 (Div. 2) C. Pocket Book
- [USACO 08JAN]Haybale Guessing
- java数据从本地文件中取出_java 从数据库取数据并存入本地文本中
- 将一个数组拼接成一个指定字符串返回
- 常用软件包和环境配置(机器学习)
- myEclipse怎样将程序部署到tomcat(附录MyEclipse调试快捷键)
- pythonlist反转_Python 列表反转显示的四种方法
- HTML学习---HTML状态码
- 《算法导论》.pdf
- 如何在iPhone和Android上使用Instagram效果
- WinDriver 安装
- Pytorch对梯度进行rescale
- 孙子兵法始计篇读后感&心得(上)
- edgy trees_在Ubuntu Edgy上安装TrueCrypt
- oracle 数据库模式对象,索引,序列,同义词,查看用户拥有的表,聚簇,数据库链接
- 周鸿祎的“花房上市”执念
- 毕业设计-基于深度学习的实例分割研究
- SQL-常用SQL语句
- linux自动电梯设计,基于嵌入式Linux电梯控制系统
- zoj3380 Patchouli's Spell Cards
热门文章
- simulink中gnd无法连线问题
- 给无符号数赋值负数(有符号数)的理解(unsigned\signedf)
- Python读取文件时,出现SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 2-3
- 使用Django创建bolg的后台页面 (精简版)NO.2
- KVM之Nova通过libvirt管理QEMU/KVM虚机
- 同样是保存模型,model.save()和model. save_weights ()有何区别
- 机房重构之权限判断登录窗体
- Windows 程序设计 笔记
- 2021年慈溪横河中学高考成绩查询,喜报|2018年高考喜报频传,慈溪高考再创新辉煌...
- Linux 指令大全(2)(转)