BIO、NIO、AIO 有什么区别?

  • BIO:线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成。
  • NIO:线程发起IO请求,立即返回;内核在做好IO操作的准备之后,通过调用注册的回调函数通知线程做IO操作,线程开始阻塞,直到操作完成。
  • AIO:线程发起IO请求,立即返回;内存做好IO操作的准备之后,做IO操作,直到操作完成或者失败,通过调用注册的回调函数通知线程做IO操作完成或者失败。
  • BIO是一个连接一个线程。
  • NIO是一个请求一个线程。
  • AIO是一个有效请求一个线程。
  • BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
  • NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
  • AIO:异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理。

适用场景分析

  • BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
  • NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
  • AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

内容摘自:https://blog.csdn.net/u013068377/article/details/70312551
结合代码可参考:https://www.cnblogs.com/barrywxx/p/8430790.html


【Java面试题与答案】整理推荐

  • 基础与语法
  • 集合
  • 网络编程
  • 并发编程
  • Web
  • 安全
  • 设计模式
  • 框架
  • 算法与数据结构
  • 异常
  • 文件解析与生成
  • Linux
  • MySQL
  • Oracle
  • Redis
  • Dubbo

BIO、NIO、AIO 有什么区别?相关推荐

  1. Java常见面试题:BIO,NIO,AIO 有什么区别?

    Java 中 IO 流分为几种? 按功能来分:输入流(input).输出流(output). 按类型来分:字节流和字符流. 字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流 ...

  2. IO之 java中BIO NIO AIO原理、区别以及应用

    在本篇文章中,我们主要介绍一下java中的BIO NIO AIO,重点是NIO 先说一下同步.异步.阻塞和非阻塞. 简单来讲,同步和异步是针对内核和应用程序之间的交互而言的:阻塞和非阻塞其实是针对进程 ...

  3. java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

  4. Java中IO流的分类和BIO,NIO,AIO的区别

    到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...

  5. Java的IO流 ,BIO NIO AIO 的区别?

    目录 1.在了解不同的IO之前先了解:同步与异步,阻塞与非阻塞的区别: 2.BIO NIO AIO 分别代表什么?(面试简答): 3.BIO和NIO.AIO的区别: 4.java中io流的分类: •  ...

  6. 关于BIO | NIO | AIO的讨论

    关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释: BIO | NIO | AIO,本身的描述都是在Java语言的基础上的.而描述IO,我们需要从两个 ...

  7. Netty序章之BIO NIO AIO演变

    Netty序章之BIO NIO AIO演变 Netty是一个提供异步事件驱动的网络应用框架,用以快速开发高性能.高可靠的网络服务器和客户端程序.Netty简化了网络程序的开发,是很多框架和公司都在使用 ...

  8. 也谈BIO | NIO | AIO (Java版--转)

    http://my.oschina.net/bluesky0leon/blog/132361 关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释: BI ...

  9. IO: BIO ? NIO ? AIO?

    IO的方式通常分为几种,同步阻塞的BIO.同步非阻塞的NIO.异步非阻塞的AIO. 一.BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSock ...

  10. 内核aio_今天来说说令人让人傻傻分不清的BIO,NIO,AIO

    | 作者:新一. | 简书:https://www.jianshu.com/u/b3263fc54bce | 知乎:https://www.zhihu.com/people/qing-ni-chi-y ...

最新文章

  1. 拒绝+启示+TED+被拒的100天+What I learned from 100 days of rejection
  2. docker 部署 redis
  3. 笔记本自开wifi设置
  4. python安装百度aip_PIL+百度aip
  5. Codeforces 482E ELCA (LCT)
  6. 数据结构与算法 / UUID 和 GUID 区别和联系
  7. Linux console on LCD
  8. Spring Mvc:用MultiPartFile上传单个文件,多个文件
  9. 5元的小乌龟吃什么_小乌龟吃什么最好?
  10. 普中科技51单片机写芯片超时烧录失败问题
  11. ZZULIOJ 1188: 选票统计(一)(结构体专题)
  12. 什么是php-fpm
  13. win2003 apache php mysql,浅析Win2003系统中配置Apache+php+mysql的方法
  14. java基础篇---第一天
  15. 【Win10】电脑麦克风录音:设备调测
  16. 同样是技术出身,深夜看完王兴饭否的190条思考,越想越后怕!
  17. 【线性代数】一、行列式和矩阵
  18. 二叉树的深度 | 分治 +回溯 + 迭代
  19. 查看局域网所有MAC地址
  20. bootpdf下载 spring_SpringBoot教程 PDF 下载

热门文章

  1. 商务邮箱一般用什么邮箱正式?VIP邮箱名怎么设置好?
  2. 论文成功写作技巧之行之有效的写作从“结果”开始(下)
  3. ec java sm2证书_国密算法SM2证书制作
  4. 流式布局之javascript实现照片瀑布流以及Macy.js插件实现瀑布流
  5. 天敏VC4000调试
  6. NIO空轮训出现的原理以及修复方案
  7. python的post请求中加参数_Python 模拟post请求
  8. 打开浏览器的同时会在主页外同时打开芒果TV,抖音等网站
  9. 6-2 读文章(*) (10分)
  10. 十二种卫星地图的快速比较和选择方法