首页 > 编程语言 > 详细

Java面试题—BIO,NIO,AIO

时间:2021-07-29 22:16:45      阅读:41      评论:0      收藏:0      [点我收藏+]

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

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

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

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

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

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

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

Java面试题—BIO,NIO,AIO

原文:https://www.cnblogs.com/aismall/p/15076922.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!