BIO的不合理
Java远古时代的BIO先天就无法支持多个客户端的连接
但是实际上对一个linux系统, 一个连接就是只是一个文件描述符而已, 而存储一个文件描述符成本是很低的
在BIO的世界里, 为客户端服务的线程绝大多数时间都是闲置的, 苦苦等待客户端发送的数据
显然,如果每多一个连接就非要新增一个线程去苦苦等待, 是不合理的
linux的进步
后来linux提供了 select(), poll(), epoll() 这样的系统调用
虽然三种方法有些区别, 但是与BIO最核心的区别就是: 允许一个线程去监听多个网络连接的不同网络事件
这里不讨论linux的网络编程
Java的变革
既然linux提供了api, 那么Java自然就能在语言和JDK层面支持
在Java1.4的时候出现了NIO的API
上一篇:老文档