关于:Java网络IO编程(BIO、NIO、AIO)
Eijux(讨论 | 贡献)2021年5月13日 (四) 22:52的版本 (Eijux移动页面关于:Java应用BIO、NIO、AIO至关于:Java网络IO编程(BIO、NIO、AIO),不留重定向)
关于
本文主要讨论 Java 实现 network IO 的三种实现:BIO、NIO、AIO。
什么是 BIO、NIO、AIO?
- 见:“关于:5种I/O模型”
- BIO:“blocking IO”,阻塞IO;
- NIO:“non-blocking IO”,非阻塞IO;
- AIO:“asynchronous IO”,异步IO;
Java 的 NIO API
- 见:“关于NIO”(概念、组件、用法)
需要注意的是:
- Java NIO 是“Java New IO API”,而非“Non-Blocking IO”。二者不是一个概念。
- Java NIO 支持面向缓冲区的、基于通道的IO操作,以更加高效的方式进行文件的读写操作。
- 其 NIO API 既可以实现“Non-Blocking IO”(NIO)和“Asynchronous IO”(AIO),也可以实现“Blocking IO”(BIO)。
BIO(blocking IO)
NIO(non-blocking IO)
AIO(asynchronous IO)
AIO 是 Java 1.7 之后引入的包,是 NIO 的升级版本,新增了提异步非阻塞的 IO 操作方式,所以人们叫它 AIO(Asynchronous IO),异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会执行回调通知相应的线程进行后续的操作。
在Java 7中增加了asynchronous IO,具体结构和实现类框架如下: