BIO: 同步阻塞I/O,是JDK1.4之前的传统IO模型。 线程发起IO请求后,一直阻塞,直到缓冲区数据就绪后,再进入下一步操作。
NIO:同步非阻塞IO,当线程发起IO请求后,不需要阻塞,会立即返回。用户线程不原地等待IO缓冲区,可以先做一些其他操作,只需要定时轮询检查IO缓冲区数据是否就绪即可。
AIO:异步非阻塞I/O模型。线程发起IO请求后,不需要阻塞,立即返回,也不需要定时轮询检查结果,异步IO操作之后会回调通知调用方。
BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
AIO方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。
举个例子 BIO就是阻塞IO,我们需要一直等待某件事请做好之后,才能去做其他的事情 NIO就是我们需要别人完成之后,才能干下一件事情,但是我们在等待他干完这件事情之后,我们可以干其他与之不相干的事情,只需要定时的来看, 他这件事有没有做完,而AIO则是BIO的升级版,就是我告诉别人,你干完这件事情后通知我,我先去做别的事,这样就更好理解了