news 2026/5/15 13:43:56

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/5/11 5:46:18

从S锁/X锁到Next-Key Lock:MySQL锁机制硬核拆解

从 S 锁 / X 锁 到 Next-Key Lock&#xff1a;MySQL InnoDB 锁机制硬核拆解 MySQL 的 InnoDB 引擎锁机制是面试和生产中高频考点&#xff0c;尤其是幻读如何被解决、Next-Key Lock 到底锁了什么、加锁规则如何判断等。下面从基础到进阶&#xff0c;一层层拆解。 1. 锁的分类总…

作者头像 李华
网站建设 2026/5/9 0:27:39

PPML 估计 + 一般均衡求解?ge_gravity2 一套 Stata 命令全搞定

温馨提示&#xff1a;若页面不能正常显示数学公式和代码&#xff0c;请阅读原文获得更好的阅读体验。 丁闪闪 (lianxhcn163.com) 曾咏新 厦门大学 (zengyongxinhpe163.com) 提要&#xff1a;本文系统整理了金融大语言模型 (LLM) 研究的核心资源&#xff0c;包括 12 个主流金融数…

作者头像 李华
网站建设 2026/5/12 1:22:25

leetcode 930. Binary Subarrays With Sum 和相同的二元子数组

Problem: 930. Binary Subarrays With Sum 和相同的二元子数组 前缀和&#xff0c;哈希表记录每个和所在的索引i&#xff0c;对goal0分开讨论的&#xff0c;使用前缀和- goal&#xff0c;拿到s prefixSum[i1] - goal;&#xff0c;数可能的子数组个数&#xff0c;并累加 Code …

作者头像 李华
网站建设 2026/5/12 1:23:05

探秘AI教材写作!这些工具能让你的教材生成过程低查重率

在编写教材的过程中&#xff0c;总是能精准触及“慢节奏”带来的种种问题。尽管已经准备好了框架和资料&#xff0c;却总是在内容写作上卡住——一段话反复推敲半个小时&#xff0c;还是觉得表达不够准确&#xff1b;章节间的过渡连接&#xff0c;更是绞尽脑汁也想不出合适的词…

作者头像 李华
网站建设 2026/5/12 1:23:06

四光吊舱多光谱融合技术解析

四光吊舱的多光谱融合&#xff0c;核心在于将可见光、热成像等不同波段的传感器数据进行协同处理和智能分析。这不仅能让你“看见”&#xff0c;更能让你“看透”复杂场景。多光谱融合模块的技术要点这项技术主要围绕硬件集成、算法处理和环境适应三个层面展开&#xff0c;下表…

作者头像 李华