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

Java I/O 模型精讲:从传统BIO到高性能NIO与AIO

一、IO基础概念

1.1、传统的 IO 大致可以分为4种类型:

  • InputStream、OutputStream 基于字节操作的 IO
  • Writer、Reader 基于字符操作的 IO
  • File 基于磁盘操作的 IO
  • Socket 基于网络操作的 IO

1.2、BIO、NIO、AIO区别

IO名称

特点

描述

BIO

阻塞、同步

优点:代码简单,直观,缺点:效率与扩展性低

NIO

支持多路复用,非阻塞、同步

更接近操作系统底层高性能的数据操作方式

AIO

非阻塞、异步

基于事件和回调机制实现

1.3、同步、异步、阻塞、非阻塞

同步与异步:

是针对于任务与任务之间的关系,同步就是一个任务依赖另一个任务时,等被依赖的任务执行完成之后,依赖的任务才可以执行;而异步不需要等被依赖任务执行完成,只需要给他通知任务,之后依赖任务也立即执行;

阻塞与非阻塞:

主要针对于CPU消耗,阻塞就是CPU先把第一个线程执行完,再执行第二个线程;非阻塞就是在第一个线程执行时,会切换线程,做其他事情,当第一个线程执行完,会切换回来继续执行后续操作;虽然提高了CPU的利用率,但是增加了系统频繁切换线程的压力。

http://www.xdnf.cn/news/1330003.html

相关文章:

  • TDengine IDMP 运维指南(4. 使用 Docker 部署)
  • HarmonyOS 实战:学会在鸿蒙中使用第三方 JavaScript 库(附完整 Demo)
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码1
  • Orange的运维学习日记--47.Ansible进阶之异步处理
  • [Git] 如何拉取 GitHub 仓库的特定子目录
  • Qt——文件操作
  • word如何转换为pdf
  • 关于物理世界、感知世界、认知世界与符号世界统一信息结构的跨领域探索
  • 算法——快速幂
  • mycat分库分表实验
  • iOS App 混淆工具实战,教育培训类 App 的安全保护方案
  • [激光原理与应用-308]:光学设计 - 266皮秒深紫外激光器设计图纸示例解析(基于工程实现与专利技术)
  • 网络聚合链路与软件网桥配置指南
  • 从一个ctf题中学到的多种php disable_functions bypass 姿势
  • CNN 在故障诊断中的应用:原理、案例与优势
  • 机器人控制基础:串级 PID 和模糊 PID介绍与对比(干货总结)
  • Transformer十问
  • java17学习笔记-Deprecate the Applet API for Removal
  • LCC-LCC谐振式无线充电系统控制技术研究的复现
  • 期权小故事:王安石变法与期权
  • 前端本地模糊搜索1.0 按照匹配位置加权
  • 土地财政历史探寻
  • Diamond开发经验(1)
  • RabbitMQ:SpringAMQP Direct Exchange(直连型交换机)
  • 走进数字时代,融入数字生活,构建数字生态
  • Arthas 全面使用指南:离线安装 + Docker/K8s 集成 + 集中管理
  • 开源 C++ QT Widget 开发(一)工程文件结构
  • 猫头虎AI分享|字节开源了一款具备长期记忆能力的多模态智能体:M3-Agent 下载、安装、配置、部署教程
  • Java NIO 核心精讲(上):Channel、Buffer、Selector 详解与 ByteBuffer 完全指南
  • Python量化交易:结合爬虫与TA-Lib技术指标分析