Java I/O模型

目录

一、介绍I/O

二、Java中常见的I/O

1.BIO,同步阻塞IO

2.NIO,同步非阻塞IO

3.AIO,异步I/O

三、三种IO的区别

 


一、介绍I/O

1.I/O(Input/Output)的即为输入输出。

2.从计算机的角度来看:在冯诺伊曼体系中,计算机结构分为:运算器控制器存储器输入设备输出设备I/O描述了外部设备和内部设备的通信。从应用程序的角度来看,一个进程为了保证稳定性和安全性,将地址空间划分为用户空间和内核空间我们平常运行的应用程序都是在用户空间上,内核空间处理系统态级别的资源操作,入文件操作、进程通信、内存管理等等。所以说想要进行I/O需要依赖内核空间的能力

3.我们平常进行开发的过程中,最常接触的就是磁盘I/O和网络I/O。在应用程序的视角看,应用程序对操作系统内核发起I/O调用操作系统负责执行具体的I/O操作

二、Java中常见的I/O

1.BIO,同步阻塞IO

这种I/O操作的缺陷很明显,只能处理客户端连接量不多的情况当客户端连接量达到万级别的时候传统BIO模型是无能为力的

2.NIO,同步非阻塞IO

1.这种I/O方式执行过程中,应用程序会不断给操作系统内核发送I/O调用read),这段时间内线程依然是阻塞的等内核空间将将数据返回到用户空间。同时缺陷也很明显,应用程序不断调用IO询问数据返回的过程是非常耗费CPU资源的。

 2.这个时候I/O多路复用就发挥了作用,线程首先发起select调用询问内核是否准备好数据等内核将数据准备就绪时用户线程在发起read调用read调用过程的过程数据从内核空间->用户空间还是阻塞的

I/O多路复用,通过减少对内核的无效调用,减少了对CPU的占用。 

3.在NIO当中,有一个非常重要的概念就是选择期selector),也称为多路复用器通过他只需一个线程就能连接管理多个客户端

3.AIO,异步I/O

1.异步IO是基于事件的回调机制实现的,也就是应用程序操作完成之后不会阻塞在原地而是当后台处理完成后操作系统会通知相应的线程进行后续操作。

三、三种IO的区别

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爆裂突破手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值