当前位置: 首页 > news >正文

IO与NIO的区别

首先,I/O ,指的是 IO 流, 它可以实现数据从磁盘中的读取以及写入。 实际上,除了磁盘以外,内存、网络都可以作为 I/O 流的数据来源和目的地。 在 Java 里面,提供了字符流和字节流两种方式来实现数据流的操作。 其次,当程序是面向网络进行数据的 IO 操作的时候,Java 里面提供了 Socket 的方式来实现。 通过这种方式可以实现数据的网络传输。 (如图)基于 Socket 的 IO 通信,它是属于阻塞式 IO,也就是说,在连接以及 IO 事件未就绪的情况 下,当前的连接会处于阻塞等待的状态。

一旦某个连接处于阻塞状态,那么后续的连接都得等待。所以服务端能够处理的连接数量非常有限。 NIO,是 JDK1.4 里面新增的一种 NEW IO 机制,相比于传统的 IO,NIO 在效率上做了很大的优化, 并且新增了几个核心组件。 Channel、Buffer、Selectors。

(如图)另外,还提供了非阻塞的特性,所以,对于网络 IO 来说,NIO 通常也称为 No-Block IO,非 阻塞 IO。 也就是说,通过 NIO 进行网络数据传输的时候,如果连接未就绪或者 IO 事件未就绪的情况下,服务端 不会阻塞当前连接,而是继续去轮询后续的连接来处理。 所以在 NIO 里面,服务端能够并行处理的链接数量更多。

因此,总的来说,IO 和 NIO 的区别,站在网络 IO 的视角来说,前者是阻塞 IO,后者是非阻塞 IO。

http://www.dtcms.com/a/45343.html

相关文章:

  • set 和 map 的左右护卫 【刷题反思】
  • android::hardware::configureRpcThreadpool使用介绍
  • OpenCV计算摄影学(3)CUDA 图像去噪函数fastNlMeansDenoising()
  • Kubernetes (K8S) 高效使用技巧与实践指南
  • PyTorch 的 nn.NLLLoss:负对数似然损失全解析
  • 在 ASP.NET Core 中压缩并减少图像的文件大小
  • lqb官方题单-速成刷题清单(上) - python版
  • AI 实战2 - face -detect
  • Open3D解决SceneWidget加入布局中消失的问题
  • composer 错误汇总
  • 排序算法(3):
  • Dify Workflows MCP Server (TypeScript)设计与实战
  • 人工智能之数学基础:线性代数中矩阵的运算
  • 极简本地体验deepseek大模型教程
  • 蓝牙接近开关模块感应开锁手机靠近解锁支持HID低功耗
  • Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
  • 爱普生可编程晶振 SG-8101CE 在智能家居领域展现出的优势
  • 【机器学习】逻辑回归(Logistic Regression)
  • 散户如何实现自动化交易下单——篇1:体系介绍与获取同花顺资金账户和持仓信息
  • mysql安装教程,超详细图文教程(附安装包)MySQL8.0安装教程
  • virtualbox安装ubuntu,配置静态ip
  • UnrealEngine UE5 可视化 从地球观察火星 金星 土星 运动轨迹
  • 【Android】安卓付款密码输入框、支付密码输入框
  • 基于PLC的智能窗控制系统设计
  • Spring Boot 拦截器(Interceptor)
  • 目标检测——数据处理
  • 嵌入式晶振细究
  • 《深度揭秘:生成对抗网络如何重塑遥感图像分析精度》
  • 2025年2月个人工作生活总结
  • 网络层IP协议