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

来自Wikioe
跳到导航 跳到搜索
(Eijux移动页面关于:BIO、NIO、AIO关于:Java应用BIO、NIO、AIO,不留重定向)
无编辑摘要
第2行: 第2行:


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


=== 什么是 BIO、NIO、AIO? ===
* 见:“'''[[关于:5种I/O模型]]'''”




# BIO:“blocking IO”,阻塞IO;
# NIO:“non-blocking IO”,非阻塞IO;
# 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示例 ==


<syntaxhighlight lang="java" highlight="">


</syntaxhighlight>


<syntaxhighlight lang="java" highlight="">


</syntaxhighlight>


<syntaxhighlight lang="java" highlight="">


</syntaxhighlight>


<syntaxhighlight lang="java" highlight="">


</syntaxhighlight>


<syntaxhighlight lang="java" highlight="">


</syntaxhighlight>


<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
== NIO示例 ==
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
== AIO示例 ==
<pre>
AIO 是 Java 1.7 之后引入的包,是 NIO 的升级版本,新增了提异步非阻塞的 IO 操作方式,所以人们叫它 AIO(Asynchronous IO),异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会执行回调通知相应的线程进行后续的操作。
</pre>
在Java 7中增加了asynchronous IO,具体结构和实现类框架如下:
: [[File:Java NIO:AsynchronousChannel类结构.png|400px]]
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>
<syntaxhighlight lang="java" highlight="">
</syntaxhighlight>


<syntaxhighlight lang="java" highlight="">
<syntaxhighlight lang="java" highlight="">


</syntaxhighlight>
</syntaxhighlight>

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


关于

本文主要讨论 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示例


NIO示例


AIO示例

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

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

Java NIO:AsynchronousChannel类结构.png