“关于:Java网络IO编程(BIO、NIO、AIO)”的版本间差异

来自Wikioe
跳到导航 跳到搜索
第55行: 第55行:
</syntaxhighlight>
</syntaxhighlight>


== NIO示例 ==
== NIO(non-blocking IO) ==


<syntaxhighlight lang="java" highlight="">
<syntaxhighlight lang="java" highlight="">
第88行: 第88行:


</syntaxhighlight>
</syntaxhighlight>


== AIO示例 ==
== AIO示例 ==

2021年5月13日 (四) 22:49的版本


关于

本文主要讨论 Java 实现 network IO 的三种实现:BIO、NIO、AIO。

什么是 BIO、NIO、AIO?


  1. BIO:“blocking IO”,阻塞IO;
  2. NIO:“non-blocking IO”,非阻塞IO;
  3. AIO:“asynchronous IO”,异步IO;

Java 的 NIO API

  • 见:“关于NIO”(概念、组件、用法)


需要注意的是:

  • Java NIO 是“Java New IO API”,而非“Non-Blocking IO”。二者不是一个概念。
    • Java NIO 支持面向缓冲区的、基于通道的IO操作,以更加高效的方式进行文件的读写操作。
  • 其 NIO API 既可以实现“Non-Blocking IO”(NIO)和“Asynchronous IO”(AIO),也可以实现“Blocking IO”(BIO)。

BIO(blocking IO)

NIO(non-blocking IO)

AIO示例

AIO 是 Java 1.7 之后引入的包,是 NIO 的升级版本,新增了提异步非阻塞的 IO 操作方式,所以人们叫它 AIO(Asynchronous IO),异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会执行回调通知相应的线程进行后续的操作。

在Java 7中增加了asynchronous IO,具体结构和实现类框架如下:

Java NIO:AsynchronousChannel类结构.png