楼主还是表达有问题, 你直接贴知乎答案
```
假如有 10000 个连接,4 核 CPU ,那么 bio 就需要一万个线程,而 nio 大概就需要 5 个线程(一个接收请求,四个处理请求)。如果这 10000 个连接同时请求,那么 bio 就有 10000 个线程抢四个 CPU ,几乎每个 CPU 平均执行 2500 次上下文切换,而 nio 四个处理线程,几乎每个线程都对应一个 CPU ,也就是几乎没有上下文切换。效率就体现出来了。
链接:
https://www.zhihu.com/question/59356897/answer/164387902```
当然是错误的
```
说下我的理解哈:
前提:BIO 面向流,NIO 面向缓冲区
10000 个连接,4 核 CPU ,如果是 BIO ,那么 Client ->OS 这个过程是阻塞的,当其中 4 个线程获取到 CPU 等待 OS 读取资源,那么剩余 9996 个线程就阻塞等待 T1,假设 1 个线程等待 OS 读取资源需要阻塞 1s(其他耗时先不考虑哈),那么剩下的线程就需 9996/4s ,这就可怕了。
而 NIO 呢,当其中 4 个线程获取到 CPU 资源去缓冲区读取资源,发现 OS 还没把资源放到缓冲区中,就释放 CPU 资源去干其他事,让其他线程来试试。这就节省了阻塞时间。当然了,如果线程发现缓冲区有准备好的数据的时候,效率和 BIO 还是一样的,其他线程还是要等这 4 个线程读取完数据的(同步)。
个人理解,有偏差了还请大佬帮忙指正下。
```
楼下的小白就给误导了