AIO (Asynchronous I/O)
AIO 也就是 NIO 2。
在 Java 7 中引入了 NIO 的改进版 NIO 2,它是异步非阻塞的IO模型。
异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。
AIO 是异步IO的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。对于 NIO 来说,我们的业务线程是在 IO 操作准备好时,得到通知,接着就由这个线程自行进行 IO 操作,IO操作本身是同步的。
原理:
如果是AIO发起read操作之后,kernel收到请求后会立即响应应用进程application,
此时应用进程完全可以做其他的事,不会造成任何的block。
待kernel第一、二阶段都已经完成之后,会给应用进程发送一个signal,告诉它read操作已经完成。
所以AIO的特点是在IO的两个阶段都不会发生阻塞,而是全权交给系统内核才完成,内核完成后通过信号告知应用进程即可。