BIO,NIO,AIO

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BIO,NIO,AIO相关的知识,希望对你有一定的参考价值。

同步阻塞IO(JAVA BIO):
    同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。

异步阻塞IO(Java NIO): 
   异步阻塞,应用程序发起一个IO操作以后,不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序,(服务器SELECT程序监听是否有IO就绪,有就绪的就启动线程就绪处理)这其实就是同步和异步最关键的区别,同步必须等待或者主动的去询问IO是否完成,那么为什么说是阻塞的呢?因为此时是通过select系统调用来完成的,而select函数本身的实现方式是阻塞的,而采用select函数有个好处就是它可以同时监听多个文件句柄(如果从UNP的角度看,select属于同步操作。因为select之后,进程还需 要读写数据),从而提高系统的并发性! 

(Java AIO(NIO.2))异步非阻塞IO: 
   在此种模式下,用户进程只需要发起一个IO操作然后立即返回,等IO操作真正的完成以后,应用程序会得到IO操作完成的通知,此时用户进程只需要对数据进行处理就好了,不需要进行实际的IO读写操作,因为真正的IO读取或者写入操作已经由内核完成了。   

 

NIO,AIO,区别,NIO内核空间到用户空间,应用程序负责,AIO,数据的读取和写入有内核完成;

以上是关于BIO,NIO,AIO的主要内容,如果未能解决你的问题,请参考以下文章

Java BIO与NIO以及AIO分析

也谈BIO | NIO | AIO (Java版--转)

网络IO模型——简析NIO / BIO / AIO

网络IO模型——简析NIO / BIO / AIO

网络IO模型——简析NIO / BIO / AIO

BIO , NIO , AIO