BIO

bio 同步阻塞,每一个请求连接都由一个线程来处理

NIO

nio 同步非阻塞,多路复用器轮询客户端的请求,每个客户端的 IO 请求会对应服务器的 一个线程

AIO

aio 异步非阻塞,客户端的io请求都是由os来处理,os处理完成后再通知服务器启动线程处理 (需要操作系统支持)

  1. 进程向操作系统请求数据
  2. 操作系统把外部数据加载到内核的缓冲区中
  3. 操作系统把内核的缓冲区拷贝到进程的缓冲区
  4. 进程获得数据完成自己的功能

Java NIO 属于同步非阻塞 IO,即 IO 多路复用,单个线程可以支持多个 IO 即询问时从 IO 没有完毕时直接阻塞,变成了立即返回一个是否完成 IO 的信号。
异步 IO 就是指 AIO,AIO 需要操作系统支持。