Java IO流,详细介绍,及用法

Posted jjdom

tags:

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

三种IO共存:BIO、NIO、AIO

Java BIO


BIO 全称Block-IO 是一种同步且阻塞的通信模式。是一个比较传统的通信方式,模式简单,使用方便。但并发处理能力低,通信耗时,依赖网速。

 

 

Java NIO


NIO 全称Non-Block IO 是Java SE 1.4版以后,针对网络传输效能优化的新功能。是一种非阻塞同步的通信模式。


NIO 与原来的I/O有同样的作用和目的,他们之间最重要的区别是数据打包和传输方式。原来的I/O 以流的方式处理数据,而NIO 以块的方式处理数据。


面向流的I/O系统一次一个字节的处理数据。一个输入流产生一个字节的数据,一个输出流的消费一个字节的数据。


面向快的I/O系统以快的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按快处理数据比较流式的的字节处理数据速度要快得多。但是面向块的I/O 缺少一些面向流的I/O所具有的优雅性和简单性。

 

 

Java AIO


AIO 全称Asynchronous IO 是异步非阻塞的IO。是一种非阻塞异步的通信模式。


在NIO的基础上引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。

 

三种IO的区别:

BIO:同步阻塞I/O模式。
NIO:同步非阻塞模式。
AIO:异步非阻塞I/O模式。

同步阻塞模式:在这种模式下,我们的工作模式是先来到厨房,开始烧水,并坐在水壶前一直等着水烧开。
同步非阻塞模式:同样我们先来到厨房,开始烧水,但是我们并不一直等着,而是回到客厅看电视,然后每隔几分钟去厨房看一下水烧开没有。
异步非阻塞模式:同样我们先来到厨房,开始烧水,但是我们并不一直等着,也不隔几分钟去看一下,而是一直在客厅看电视,水壶上面有个开关,水烧开之后他会通知我。

 


适用场景

BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。

AIO方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,允分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

 

转载:java程序员

以上是关于Java IO流,详细介绍,及用法的主要内容,如果未能解决你的问题,请参考以下文章

Java IO流 - 缓冲流的详细使用介绍

Java IO流 - 缓冲流的详细使用介绍

Java IO流 - 打印流详细使用介绍

Java输入输出流的使用详细介绍

java线程详细介绍

nginx之epoll模型的详细介绍