简单理解 Java I/O 模型

在理解java的I/O 模型之前先来看下基础的I/O 模型

1.BIO 阻塞型I/O: 顾名思义在进程发出I/O请求后,进程阻塞,在操作系统I/O操作完成,即数据准备就绪后,进程恢复运行

2 NIO 非阻塞型I/O:进程进行I/O请求后 立刻返回,如果数据没有准备好,则返回空,在使用时需要以轮询的方式反复进行I/O请求,确保数据到达。

3 I/O 多路复用( IO multiplexing):核心思路是以一个单独的线程去管理进程的所有I/O 请求(同步异步不一定) ,主要有是三个模型 select ,poll,epoll 

其中 select 和poll 模型是以轮询的方式,检查各个线程的I/O操作有没有完成并通知相应的线程

而epoll是通过内核通知的方式,在数据准备好以后由内核通知管理线程,再由管理线程通知I/O对应线程

4 信号驱动式IO(signal-driven IO): 再这里首先先介绍操作系统I/O的两个阶段,第一阶段,将数据由数据源(网络,硬盘等)复制到操作系统内核缓冲区,第二阶段:将数据由操作系统内核缓冲区复制到进程的内存地址空间中,信号驱动IO 是进程发出I/O请求后,不阻塞继续运行,待I/O第一阶段完成,由操作系统以信号的方式通知进程,进程进行处理,此时进行I/O 第二阶段操作时进程需要阻塞

5 异步 I/O(asynchronous IO) 这个类似回调函数实现,进程发出I/O请求后,不阻塞继续运行,当该I/O操作的第二阶段完成后,操作系统通知进程 ,运行回调函数,处理数据 

 

java I/O 模型

1 BIO 阻塞型IO 对应的是java.io 包下 各种 stream 和read 的类库

2 NIO java的NIO 是new IO 对应得模型是 I/O 多路复用

  NIO 主要由三个部分组成:channel buffer,selector 其中buffer是缓冲区的抽象,代表数据源,channel是传输的抽象,

selector作为管理者 管理多个channel,整个流程就是线程通过buffer读写数据,数据通过channel进行传输,selector负责总体调度

3 AIO 异步 I/O :是在java NIO的基础上增加特殊的channel 类来实现  并通过回调处理

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值