网络IO模型和JAVA中的NIO
摘要本文系统梳理了IO相关的核心概念和面试要点。首先明确IO的定义和两个阶段准备与传输接着介绍五种网络IO模型BIO、NIO、IO多路复用、信号驱动IO、异步IO并辨析同步/异步、阻塞/非阻塞的区别。重点澄清了Java NIO与网络模型中NIO的概念差异详细讲解了Java NIO的三个核心组件Channel、Buffer、Selector及其与IO多路复用的关系。最后对比了select、poll、epoll三种多路复用实现机制以及水平触发LT与边缘触发ET的工作模式。一般在面试的时候面试官都提出常见的问题讲一下你对IO的理解IO模型有哪些IO多路复用是怎么实现的讲一下Java中的NIO这篇文章系统地梳理一下我对IO这块的理解。IO的定义IO指的就是数据的输入与输出包括网络IO、磁盘IO。只要是IO它都会被划分为2个阶段分别是数据的准备阶段和数据的传输阶段。前者指的是硬件资源如网卡、磁盘和内存缓冲区的数据传递后者指的是缓冲区和用户程序之间的数据传递。IO的网络模型网络IO模型划分为BIO、NIO、IO多路复用、信号驱动IO、异步IO。同步/异步 阻塞/非阻塞网络IO模型被划分为这5类之后请问哪些是同步/异步哪些是阻塞/非阻塞的呢同步/异步主线程是否需要主动地去获取数据的结果。可见处理异步IO是内核全权处理属于异步IO其余的都是同步IO。阻塞/非阻塞在数据准备阶段内核和硬件资源进行数据交互主线程是否阻塞、挂起。可见只有BIO是一开始就read()就挂起了其余都是非阻塞IO。NIO模型read()之后发现缓冲区数据为空于是直接返回通过反复轮询的方式读取线程不挂起。IO多路复用则是通过一个线程来管理多个请求、多个连接将连接封装成文件描述符让内核监听事件可读/可写并且循环调用方法获取就绪事件事件就绪之后才read()因此也不是一开始就挂起的。易错点Java中的NIOJava中的NIO对应网络模型中的IO多路复用网络模型中的NIO指的是通过轮询read()的方式做到不阻塞二者不是一个概念。面试官请你讲一下Java中的NIO吧答Java中的NIO指的是网络模型中的IO多路复用通过一个线程来管理多个请求、多个连接的建立。NIO的实现主要依赖3个组件Channel、Buffer、Selector。Channel是对IO资源的抽象类似文件描述符通过将多个Channel注册到Selector复用器上管理多个请求Buffer在资源读写的时候会用到。Selector复用器根据操作系统会有不同的实现poll、epoll、select。select、poll、epoll的区别poll和select是扫描模型内核需要通过遍历的方式判断哪些资源就绪并且是把所有文件描述符全量拷贝回用户空间用户程序需要再次扫描判断哪些事件就绪。select基于位图拷贝fd数值上限是1024poll基于数组拷贝无上限。epoll是事件驱动模型当进行事件注册的时候注册到红黑树结构上内核监听事件就绪后会移动至就绪队列只返回就绪事件。边缘触发水平触发LT水平触发默认只要fd处于就绪状态每次调用都会返回编程简单不怕漏读但可能重复触发ET边缘触发只在状态变化边缘触发一次效率高但要求必须一次性读完数据需配合非阻塞IO

相关新闻

从游戏直播看团队协作:如何避免决策摇摆与沟通失效

从游戏直播看团队协作:如何避免决策摇摆与沟通失效

那天晚上,我本来只是想随便找个游戏直播当背景音,结果点进一个标题极其“炸裂”的直播间,就再也没能退出来。标题里写着“屎隔多黏驴酱”、“双头食人魔”、“1级打野当场让人绷不住”,这些词堆在一起,像极了那种典型的…

2026/8/3 6:28:06 阅读更多 →
高性能压缩算法选型与优化实战指南

高性能压缩算法选型与优化实战指南

1. 为什么我们需要高性能压缩库?在数据爆炸式增长的今天,压缩技术已经成为现代计算不可或缺的基础设施。我曾在处理一个日志分析项目时,原始日志文件每天产生近1TB数据,使用常规压缩工具需要近8小时才能完成压缩,而切换…

2026/8/4 9:37:34 阅读更多 →
Workingset 检测机制与 Refault 分析

Workingset 检测机制与 Refault 分析

Workingset 检测机制与 Refault 分析 一、双 CLOCK 链表 每个 NUMA 节点维护 inactive 和 active 两个链表&#xff1a;fault ──────────────────────|-------------- | ------------- reclaim <- | inactive | <--- 降级 | …

2026/8/4 9:37:34 阅读更多 →

最新新闻

数字孪生智慧电力哪个厂商做得比较好?采购选型需要重点关注哪些能力?

数字孪生智慧电力哪个厂商做得比较好?采购选型需要重点关注哪些能力?

在新型电力系统和新型能源体系建设持续推进的背景下&#xff0c;数字孪生正逐渐从单一的三维展示工具&#xff0c;演变为支撑智慧电厂、智慧变电站、新能源场站以及电网数字化运行的重要基础平台。近年来&#xff0c;随着人工智能、空间计算、视频智能分析等技术不断成熟&#…

2026/8/4 9:37:37 阅读更多 →
3步彻底清理显卡驱动:DDU工具完全掌控指南

3步彻底清理显卡驱动:DDU工具完全掌控指南

3步彻底清理显卡驱动&#xff1a;DDU工具完全掌控指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller 显卡驱…

2026/8/4 9:37:37 阅读更多 →
猫抓浏览器扩展终极指南:三步轻松搞定网页视频资源嗅探下载

猫抓浏览器扩展终极指南:三步轻松搞定网页视频资源嗅探下载

猫抓浏览器扩展终极指南&#xff1a;三步轻松搞定网页视频资源嗅探下载 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存在线视频而烦…

2026/8/4 9:37:37 阅读更多 →
STM32 RAM优化实战:从诊断到代码、链接与架构的全面内存管理策略

STM32 RAM优化实战:从诊断到代码、链接与架构的全面内存管理策略

1. 项目概述&#xff1a;当STM32的RAM捉襟见肘时做STM32开发的朋友&#xff0c;尤其是项目功能越来越复杂、用上了RTOS或者图形界面之后&#xff0c;大概率都遇到过这个让人头疼的问题&#xff1a;编译链接时&#xff0c;Keil或者IAR弹出一个刺眼的错误——.bss will not fit i…

2026/8/4 9:37:37 阅读更多 →
AVL树原理与实现:从BST缺陷到平衡优化

AVL树原理与实现:从BST缺陷到平衡优化

1. 为什么需要AVL树&#xff1a;从二叉搜索树的缺陷说起作为一名长期使用STL的C开发者&#xff0c;我经常被问到一个问题&#xff1a;"既然STL已经提供了map和set这样的关联容器&#xff0c;为什么我们还需要了解AVL树这样的底层结构&#xff1f;"要回答这个问题&…

2026/8/4 9:37:37 阅读更多 →
STM32 ADC精度提升实战:内部参考电压VREFINT校准原理与应用

STM32 ADC精度提升实战:内部参考电压VREFINT校准原理与应用

1. 项目缘起&#xff1a;为什么需要关注ADC的内部参考电压&#xff1f;在嵌入式开发&#xff0c;尤其是基于STM32这类MCU进行精密数据采集的项目里&#xff0c;ADC&#xff08;模数转换器&#xff09;的精度是绕不开的核心指标。很多工程师在项目初期&#xff0c;可能会直接使用…

2026/8/4 9:36:37 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标&#xff1a;掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码&#xff1a;多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话&#xff0c;第一次听说美国这个老牌折扣网站的跨境卖家&#xff0c;十个有八个会问同一个问题&#xff1a;这个平台到底是干嘛的&#xff1f;我见过一个做家居出口的朋友&#xff0c;他在亚马逊上月销二十万美金&#xff0c;却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者&#xff1a;邓兵、刘建国通讯单位&#xff1a;清华大学DOI&#xff1a;https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素&#xff08;REEs&#xff09;是清洁能源技术与电子器件不可或缺的核心原料&#xff0c;然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →