进行一次io有两个阶段:
1.等待内核空间准备好数据
2.数据从内核空间拷贝到用户空间
传统的bio缺点就是用户一个请求,服务端就要开启一条线程,开启的线程多了,服务端也得逐个执行,这就造成了客户端不能及时收到响应。
而nio就不一样了,假设有1000个请求过来,根据实际情况,可以分配20或者80个线程来处理。不像之前的阻塞IO那样,非得分配1000个。也就是io多路复用。
核心的对象有selector,一个selector可以管理多个channel通道,每个channel对应一个buffer。