BIO、NIO 和 AIO 有什么区别?
先自己想一想,再看参考要点
参考要点
- BIO 对应阻塞式 I/O,线程阻塞在 read 上,每个连接要一个线程
- NIO 对应 I/O 复用,Channel 设为非阻塞,一个线程在 Selector.select() 上等待多个连接中任意一个就绪(Linux 上用 epoll 实现)
- AIO 对应异步 I/O 的编程方式,数据复制到应用的缓冲区后才通知应用,但 Linux 上的 JDK 实际用 epoll 加线程池实现
- BIO、NIO 在复制数据时仍会阻塞,属于同步 I/O