ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java面试题—BIO,NIO,AIO

2021-07-29 20:31:13  阅读:223  来源: 互联网

标签:BIO 面试题 Java NIO 异步 阻塞 线程 IO 客户端


请你说一说BIO、NIO、AIO 有什么区别?

在对比这三者的区别之前,先了解一下什么是同步/异步、阻塞/非阻塞:

  • 同步:一个任务的完成之前不能做其他操作,必须等待(单行道,前车不走你没法走)。
  • 异步,一个任务的完成之前,可以进行其他操作(多行道,前车不走,你换条道走)。
  • 阻塞,是相对于CPU来说的, 挂起当前线程,不能做其他操作只能等待。
  • 非阻塞,无须挂起当前线程,也可以去执行其他操作。

BIO:同步阻塞,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

  • 例如:当一个客户端发起请求,服务端如果没有处理完,其他客户端发送的请求只能等待。

NIO:同步非阻塞,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用,服务器用一个线程来处理多个请求,客户端发送的请求会注册到多路复用器(selector选择器)上,有I/O请求的客户端分配线程处理。

AIO:异步非阻塞,是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制,客户端发送的请求先交给操作系统处理,OS 处理后再通知线程。

标签:BIO,面试题,Java,NIO,异步,阻塞,线程,IO,客户端
来源: https://www.cnblogs.com/aismall/p/15076922.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有