面试回答
BIO (Blocking I/O): 同步阻塞 I/O,是 JDK1.4 之前的传统 IO 模型。线程发起 IO 请求后,一直阻塞,直到缓冲区数据就绪后,再进入下一步操作。
NIO(Non-Blocking I/O):同步非阻塞 IO,线程发起 IO 请求后,不需要阻塞,立即返回。用户线程不原地等待 IO 缓冲区,可以先做一些其他操作,只需要定时轮询检查 IO 缓冲区数据是否就绪即可。
AIO(Asynchronous I/O): 异步非阻塞 I/O 模型,线程发起 IO 请求后,不需要阻塞,立即返回,也不需要定时轮询检查结果,异步 IO 操作之后会回调通知调用方。
知识扩展
Java 中的 BIO、NIO、AIO 分别适用哪些场景?
BIO 方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4 以前的唯一选择,但程序直观简单易理解。
NIO 方式适用于连接数目多且链接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK 1.4 开始支持。
AIO 方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用 OS 参与并发操作,编程比较复杂,JDK 7 开始支持。