首页 > 其他 > 详细

BIO,NIO与AIO的简介与区别

时间:2020-04-26 21:01:43      阅读:58      评论:0      收藏:0      [点我收藏+]

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。

 

BIO,NIO与AIO的简介与区别

原文:https://www.cnblogs.com/seedss/p/12781783.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!