阻塞IO,非阻塞IO,异步IO和非异步IO 的区别

   最近在研究java IO、NIO、NIO2(或者称AIO)相关的东西,有些概念还是要明确下。

   按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO,按照POSIX标准来划分只分为两类:同步IO和异步IO。

如何区分呢?首先一个IO操作其实分成了两个步骤:

 1、发起IO请求

 2、实际的IO操作

阻塞和非阻塞IO:在于第一个步骤是否会会被阻塞,如果会则是阻塞IO,否则是非阻塞IO.

异步和非异步(同步)IO:在于第二个步骤是否会阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO服用、信号驱动IO都是同步IO,如果不阻塞,而是操作系统帮你做完IO操作再将结果返回给你,那么就是异步IO。

  Java NIO是自jdk1.4引入的新特性,之前的IO都是阻塞的,而NIO则是非阻塞式的。

  Java NIO 2.0的主要改进就是引入了异步IO(包括文件和网络)。 

 

你可能感兴趣的:(非阻塞)