BIO同步阻塞IO,NIO同步非阻塞IO,BIO异步非阻塞IO;
传统IO和新IO都是用于输入/输出,传统的IO存在没有读到有效数据,程序将会在此处阻塞线程的执行。新IO(NIO)采用文件映射的方式来处理IO,将文件或者文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了。通过这种方式就可以提高输入/输出的执行效率。
NIO中包含Channel(通道)和Buffer(缓冲)这两个核心对象。Channel类似于传统的InputStream和OutputStream,其最大的区别在于它提供了一个map()方法,通过map()方法可以直接将"一块数据"映射到内存中。
Buffer可以将其理解为容器,本质是个数组。Channel中读取的数据必须先放到Buffer中,发送到Channel中的所有对象也必须首先放到Buffer中。
NIO结合Selector类可以实现非阻塞式的输入/输出。Selector监控Channel来实现非阻塞IO操作。
AIO实现异步阻塞通信。Java提供了异步Channel支持,异步Channel可以提供更高效的IO,基于异步Channel的IO机制被称为异步IO。
IO分类为:同步IO和异步IO。
对于IO操作分为两步:1.程序发出IO请求;2.完成实际的IO操作。传统IO和NIO分为阻塞IO和非阻塞IO,都是针对请求是否为程序发出IO请求是否阻塞来划分的。同步IO与异步IO的区别在于第二步,异步的IO操作是由操作系统完成,再将结果返回给应用程序,这就是异步IO;如果实际的IO操作需要应用程序本身执行,会阻塞线程,那就是同步IO。
原文:https://www.cnblogs.com/seedss/p/12781783.html