news 2026/5/1 6:02:34

Java高频面试题:BIO、NIO、AIO有什么区别?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java高频面试题:BIO、NIO、AIO有什么区别?

大家好,我是锋哥。今天分享关于【Java高频面试题:BIO、NIO、AIO有什么区别?】面试题。希望对大家有帮助;

Java高频面试题:BIO、NIO、AIO有什么区别?

BIO(Blocking I/O)、NIO(Non-blocking I/O)、AIO(Asynchronous I/O)是Java中处理I/O(输入/输出)的三种不同模式,每种模式都有其特点和适用场景。以下是这三种I/O模式的详细比较:

1. BIO(Blocking I/O)

特点

适用场景

示例代码

ServerSocket serverSocket = new ServerSocket(port); Socket socket = serverSocket.accept(); // 阻塞,等待连接 InputStream input = socket.getInputStream(); byte[] buffer = new byte[1024]; int bytesRead = input.read(buffer); // 阻塞,直到接收到数据

2. NIO(Non-blocking I/O)

特点

适用场景

示例代码

Selector selector = Selector.open(); ServerSocketChannel serverChannel = ServerSocketChannel.open(); serverChannel.bind(new InetSocketAddress(port)); serverChannel.configureBlocking(false); serverChannel.register(selector, SelectionKey.OP_ACCEPT); while (true) { selector.select(); // 阻塞直到有事件发生 for (SelectionKey key : selector.selectedKeys()) { if (key.isAcceptable()) { // 处理接受连接 } else if (key.isReadable()) { // 处理读取数据 } } selector.selectedKeys().clear(); }

3. AIO(Asynchronous I/O)

特点

适用场景

示例代码

AsynchronousServerSocketChannel serverChannel = AsynchronousServerSocketChannel.open(); serverChannel.bind(new InetSocketAddress(port)); serverChannel.accept(null, new CompletionHandler<AsynchronousSocketChannel, Void>() { @Override public void completed(AsynchronousSocketChannel channel, Void attachment) { // 处理新的连接 channel.accept(null, this); // 继续接受新连接 } @Override public void failed(Throwable exc, Void attachment) { // 处理失败 } });

在选择使用哪种I/O模式时,需根据具体的应用场景、并发量和对性能的需求来做出决策。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 10:14:52

特殊函数(贝塞尔函数....)

要贯穿整个特殊函数的发展史&#xff0c;最好的例子莫过于**“振动”**这一物理现象。 我们可以通过圆鼓皮的振动&#xff08;或地震点源激发的波&#xff09;这一主线&#xff0c;看人类是如何从“解决一个具体麻烦”演进到“建立一套宇宙对称性语言”的。 第一阶段&#xf…

作者头像 李华
网站建设 2026/5/1 5:07:13

【Linux】du 命令查看文件和目录的磁盘占用

du 命令详解&#xff1a;查看文件和目录的磁盘占用 du&#xff08;disk usage&#xff09;是 Linux 中最常用的查看磁盘空间占用情况的命令之一。它可以统计文件、目录甚至整个文件系统的实际占用空间&#xff0c;非常适合排查“磁盘满了”“哪个目录吃空间”等场景。 下面从…

作者头像 李华
网站建设 2026/4/23 19:13:58

宏智树AI封神科普:论文数据分析零门槛,小白也能做出硬核实证

作为深耕论文写作科普的博主&#xff0c;后台每天都被粉丝的求助刷屏&#xff1a;“收集了300份问卷&#xff0c;却卡在SPSS操作上动不了”“跑出来的回归结果看不懂&#xff0c;不知道怎么支撑论文论点”“理工科实验数据一堆&#xff0c;手动整理算错好几次&#xff0c;越改越…

作者头像 李华
网站建设 2026/5/1 4:38:41

一起来围观Anthropic官方万的AI Agent评估方法论

前言在传统软件开发中&#xff0c;我们习惯于“写代码 → 写测试 → 验证通过”的线性流程。测试用例是确定的&#xff0c;输出是可预测的&#xff0c;失败意味着 bug&#xff0c;成功意味着正确。但当我们转向 AI Agent 开发时&#xff0c;这套逻辑突然失效了。Agent 不再是一…

作者头像 李华
网站建设 2026/4/10 10:16:04

【Python】python-can使用记录

python-can 是目前 Python 生态中最成熟、通用的 CAN 总线通信库&#xff0c;支持多种硬件接口&#xff08;PCAN、Vector、Kvaser、SocketCAN、slcan、USB2CAN 等&#xff09;&#xff0c;同时也支持虚拟 CAN&#xff08;vcan&#xff09;和 PCAN 等。 下面整理一份实用的 pyt…

作者头像 李华
网站建设 2026/4/16 15:19:41

毕业设计 基于单片机的红外热视仪(源码+硬件+论文)

文章目录 0 前言1 主要功能2 硬件设计3 核心软件设计4 实现效果5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己…

作者头像 李华