博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java IO】IO的发展史之BIO、NIO、AIO
阅读量:5818 次
发布时间:2019-06-18

本文共 870 字,大约阅读时间需要 2 分钟。

hot3.png

       任何事物的发展都是由不完善到更好的方向发展的,至于能不能发展到完善,我这里可以负责任的说:是不能的,因为随着时代的发展,任何过去时的研究成功不能总满足当下或将来的状况。这就像我们码农的 命运一样,昨天我们学习了Struts、hibernate等技术,几年后被Spring mvc、mybatis取代的时候,我们还要赶紧学习这些框架,谁也不知道明天会不会有个新的框架出来再取而代之。只有不断学习才不会被这个时代抛弃。

        IO的发展也类似,起初(jdk1.4之前)IO提供了字节流和字符流,但设计都是线程阻塞的,效率非常低下,jdk1.4开始对IO进行了改革,推出了同步非阻塞IO, 提供了 Channel、Selector、Buffer新的抽象,读写效率得到了提高。2011年,jdk1.7发布,AIO的出现,标志着IO的操作又进入一个新阶段。

        BIO(Blocking I/O):同步阻塞IO模式,数据读取或写入必须阻塞在一个线程内完成。 【以下摘自知乎:在此种方式下,用户进程在发起一个 IO 操作以后,必须等待 IO 操作的完成,只有当真正完成了 IO 操作以后,用户进程才能运行。

        NIO(New I/O):支持同步阻塞和非阻塞IO模式。同步非阻塞:【以下摘自知乎: 在此种方式下,用户进程发起一个 IO 操作以后 边可 返回做其它事情,但是用户进程需要时不时的询问 IO 操作是否就绪,这就要求用户进程不停的去询问,从而引入不必要的 CPU 资源浪费。

        AIO( Asynchronous I/O ): 异步非阻塞I/O模型(知乎中有人说java实现的不是异步非阻塞,而是异步阻塞,这里需要进一步考证)。 异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会阻塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。

由于今天时间的问题,先整理这部分内容。后序会用实例说明每一种模式的操作方式。

转载于:https://my.oschina.net/u/3293327/blog/3036153

你可能感兴趣的文章
Linux内核中的printf实现【转】
查看>>
第四章 mybatis批量insert
查看>>
Java并发框架——什么是AQS框架
查看>>
【数据库】
查看>>
Win配置Apache+mod_wsgi+django环境+域名
查看>>
第四届中国汽车产业信息化技术创新峰会将于6月在沪召开
查看>>
linux清除文件内容
查看>>
WindowManager.LayoutParams 详解
查看>>
find的命令的使用和文件名的后缀
查看>>
Android的Aidl安装方法
查看>>
Linux中rc的含义
查看>>
曾鸣:区块链的春天还没有到来| 阿里内部干货
查看>>
如何通过Dataworks禁止MaxCompute 子账号跨Project访问
查看>>
js之无缝滚动
查看>>
Django 多表联合查询
查看>>
logging模块学习:basicConfig配置文件
查看>>
Golang 使用 Beego 与 Mgo 开发的示例程序
查看>>
ntpdate时间同步
查看>>
+++++++子域授权与编译安装(一)
查看>>
asp.net怎样在URL中使用中文、空格、特殊字符
查看>>