轮询

来源:4-8 检测IO事件

everyday_java

2021-06-19

图片描述

老师好,关于这一段,
为什么 当前时间 time - 开始时间 currentTimeNanos >= 超时时间的话, selectCnt = 1 ?
这个有点不太理解? 😭

写回答

1回答

吕相赫

2021-07-03

从“开始的时间”起,中间进行了阻塞式的select(在这个情况下:如果截止时间没到,且异步队列为空的话,那么就进行一个阻塞式的select操作),阻塞是需要花费时间的,只有被select监听的fd有读写操作时,才被唤醒,超过了“超时时间”就证明发生了阻塞,所以select执行次数selectCnt(count计数的意思)+1;

当然如果没有超过“超时时间的话”,证明没有阻塞生效,也就是没有阻塞就立即返回了;这个时候返回的可能就是一个空数组,然后while死循环,后面的自己查吧,就是jdk空轮询。

0
0

Java读源码之Netty深入剖析

解析netty各大组件细节,百万级性能调优,设计模式实际运用

2334 学习 · 283 问题

查看课程