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

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.lryc.cn/news/436300.html

相关文章:

  • 如何使用python运行Flask开发框架并实现无公网IP远程访问
  • 第三届828 B2B企业节开幕,大腾智能携手华为云共谱数字化新篇章
  • Linux网络编程IO管理
  • SpringCloud集成ELK
  • 【卷起来】VUE3.0教程-06-组件详解
  • JS Web
  • 【Linux】传输层协议——UDP
  • 算法学习攻略总结 : 入门至进阶,通关之路指南
  • 《卷积神经网络 CNN 原理探秘》
  • C#获取计算机信息
  • 派遣函数 - 通过设备链接打开设备
  • Vue 2 中的 `$set` 方法详解
  • 掌握Hive函数[2]:从基础到高级应用
  • 水壶问题记录
  • spring综合性利用工具-SpringBootVul-GUI(五)
  • 2024年9月12日(k8s环境及测试 常用命令)
  • 卫生间漏水原因很多,切莫病急乱投医
  • IEEE 802.11a OFDM系统的仿真(续)
  • Linux cut命令详解使用:掌握高效文本切割
  • c++11新特性——endable_shared_from_this
  • 小程序的右侧抽屉开关动画手写效果
  • vue3中el-table中点击图片放大时,被表格覆盖
  • GO学习笔记(4) strconv/time
  • 课程管理系统-数据库-基于MySQL的数据库课程设计
  • 降维打击 华为赢麻了
  • [数据集][目标检测]汽车头部尾部检测数据集VOC+YOLO格式5319张3类别
  • python 生成的代码,需要帮我生成一个直接在一台没有依赖的电脑上运行的 包
  • 【Linux】操作系统与进程
  • 【Linux】 LTG:移动硬盘部署Ubuntu24.04
  • Android的logcat日志详解