多路复用实现:
select 原理:
需要检查socket的集合,其实就是检查fd
linux 系统上,一切皆文件,socket也不列外
操作系统这个select 函数被调用以后,首先会按照
fd集合,去检查内存中的socket套接字状态
检查完一遍之后,如果有就绪状态的socket
那么直接返回,不会堵塞当前调用线程
否则 就说明当前指定fd集合对应的socket没有就绪状态
那么就要堵塞当前调用线程了,直到有某个socket有数据之后,才唤醒线程
select 函数监听socket 默认是1024个socket
SELECT 函数它检查到继续状态的socket之后,它做了两件事情:
1.跑到就绪状态的socket 对应的fd中设置一个标记
2.返回select 函数,对应也就是唤醒java线程,表示几个socket处于就绪状态