Java面试题—BIO,NIO,AIO

2021/7/29 22:09:25

本文主要是介绍Java面试题—BIO,NIO,AIO,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

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

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

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

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

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



这篇关于Java面试题—BIO,NIO,AIO的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程