java nio中selector.select()是唯一的阻塞方法么?
1个回答
展开全部
NIO是非阻塞IO,传统的BIO是每次request服务器都会分配一个线程,所以,当某个线程发生IO阻塞的时候,该线程就无法充分利用。而NIO则是服务器会不断的轮询每一个client发送的request,如果有N个可读状态的request,OK,那服务器就会分配N个线程去读,所谓非阻塞就是这个意思。
如果理解NIO的意思,楼主的问题自然而然就解答了。
selector是怎样检查有没有就绪事件的?答:每个request会封装一个channel,将所有的channel注册在一个Selector上,然后selector开始不断的轮询每个request的可读状态,如果可读,则直接返回可读状态的channel。
隔段时间检查一下吗?答:是不断轮询可读状态的,if(n==0)continue;如果可读状态的个数n为0,则继续轮询,这句话就是这个意思。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询