【Java IO】IO的发展史之BIO、NIO、AIO

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

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

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

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

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

因为今天时间的问题,先整理这部份内容。后序会用实例说明每一种模式的操做方式。学习

相关文章
相关标签/搜索