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

Java面试篇基础部分-Java中常用的I/O模型

阻塞I/O模型

  阻塞式的I/O模型是一种非常常见的I/O模型机制,在进行数据读写操作的时候,客户端会发生阻塞等待。

  工作流程如图所示,该用户线程一直阻塞,等待内存中的数据就绪;内存中的数据就绪之后,内核态的数据将拷贝到用户线程中,并且返回I/O的执行结果到用户线程。这个时候用户线程将会解除刚刚的阻塞状态并开始进行数据的处理。

  比较典型的场景就是socket.read(),如果内核数据没有,Socket线程就会一直阻塞在read()中进行等待。
在这里插入图片描述

非阻塞I/O模型

  非阻塞I/O模型是指用户线程在发起一个I/O操作之后,不需要阻塞就可以得到一个来自内核的反馈结果。如果内核的返回结果是false,表示内核数据还没有准备好,需要在稍后发起I/O操作。如果内核中的数据准备完成,并且收到用户请求的时候,内核就会立即将数据复制到用户的线程中,并且将数据复制的结果通知用户线程。
在这里插入图片描述
  在非阻塞的I/O模型中,用户线程需要不断的访问内核数据是否就绪,在内核数据没有准备好的时候,用户线程可以进行处理其他的任务操作,在内核的数据准备好之后,立即获取数据并且进行响应的操作。如下所示。


http://www.kler.cn/a/299641.html

相关文章:

  • DeepSeek的崛起与全球科技市场的震荡
  • 单机伪分布Hadoop详细配置
  • 房屋租赁系统在数字化时代中如何重塑租赁服务与提升市场竞争力
  • 创建 priority_queue - 进阶(内置类型)c++
  • Leetcode:350
  • 网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。
  • EG边缘计算网关连接华为云物联网平台(MQTT协议)
  • Artitalk配置图床
  • 敏捷与企业架构:战略联盟
  • C#中chart绘制曲线
  • 居然还有人不懂强引用、弱引用与软引用
  • svn常见错误及解决办法
  • 「豆包 Marscode 体验官」AI 加持的云端 IDE——三种方法高效开发前后端聊天交互功能
  • spring ai整合ollama anythingllm
  • webpack+lite-server 构建项目示例
  • 二百六十三、Java——IDEA项目打成jar包,然后在Linux中运行
  • 智能交通(四)——CMC特刊推荐
  • C#Bitmap和Image之间的关系
  • 线性代数基础:向量、矩阵、张量及其在机器学习中的应用详解
  • C++——矩阵无重复行列取数问题
  • 游戏出海迎新变局——海外游戏市场有哪些新趋势和新机遇?
  • SAP自动付款和自动付款常见错误解决方案
  • SAP ABAP选择屏幕(ACTIVE,INPUT,REQUIRED)
  • 说一下解除docker限制内存警告
  • 基于SpringBoot+Vue+MySQL的房屋租赁管理系统
  • 深入理解TCP三次握手