Java中BIO,NIO和AIO使用样例

上文中分析了阻塞,非阻塞,同步和异步概念上的区别以及各种IO模型的操作流程,本篇文章将主要介绍Java中BIO,NIO和AIO三种IO模型如何使用。需要注意的是,本文中所提到的所有样例都是在一个server对应一个client的情况下工作的,如果你想扩展为一个server服务多个client,那么代码需要做相应的修改才能使用。另外,本文只会讲解server端如何处理,客户端的操作流程可以仿照服务端进行编程,大同小异。文章最后给出了源码的下载地址。 BIO(Blocking I/O) 在Java中,BIO是基于流的,这个流包括字节流或者字符流,但是细心的同学可能会发现基本上所有的流都是单向的,要么只读,要么只写。在实际上编程时,在对IO操作之前, »

BIO,NIO和AIO模型介绍

在计算机的世界中,IO操作是不可避免的一个话题。 IO操作涉及到的阻塞,非阻塞,同步和异步这些概念常常让我感到混乱,为此,专门抽出时间对这些概念做了一下简单的研究,记录如下。希望可以帮助还在这些概念中挣扎的同学。 阻塞,非阻塞,同步和异步 IO操作实际上可以分为两步:发起IO请求和实际的IO操作。如果在第一步发起IO请求时发生阻塞,那么这个IO操作就可以说阻塞的,否则是非阻塞的。如果在第二步实际IO操作时发生阻塞,那么这个IO操作就是同步的,否则就是异步的。 换种说法,阻塞和非阻塞是指在用户程序查询IO就绪状态时(比如查询IO是否有数据),用户程序对IO不同的就绪状态所表现出来的不同形式。以读取数据为例,当IO没有数据可供读取时, »