疏窗

  • 首页
  • 生活
  • Java
  • Python
  • Golang
  • 其他
  • 归档

  • 搜索
leetcode jdk 生活 nas nosql 数据库 线程 爬虫 中间件

io模型

发表于 2019-03-01 | 分类于 Java | 0 | 阅读次数 1322

一、什么是I/O操作?

I = input o = output

  • 从计算机的角度来讲,I/O描述了计算机与外部系统的通信过程

  • 从应用程序的角度来讲,I/O实际上是发起调用指令到系统给予调用者资源的过程

二、有哪些常见的I/O模型?

Unix系统下,I/O模型分为五种:

  1. 同步阻塞I/O
  2. 同步非阻塞I/O
  3. I/O多路复用
  4. 信号驱动I/O
  5. 异步I/O

三、Java中常见的三种I/O模型

  1. BIO(Blocking I/O)属于同步阻塞I/O模型,特点是应用程序发起read调用操作后,会阻塞,直到内核把数据拷贝到用户空间。

  2. NIO(Non-blocking/New I/O)属于I/O多路复用模型,特点是应用程序首先发送一个select/epoll调用,询问内核是否将数据准备就绪,当内核准备就绪时,才会发送read调用从内核获取数据,本质上发送read调用到成功获取数据这段时间依旧是阻塞的,仍然属于同步I/O

  3. AIO(Asynchronous I/O) 属于异步I/O模型,特点是应用操作后会直接返回,不会阻塞,操作系统会在处理完成时通知相应的线程进行后续的操作。

打赏作者
疯子虾夫 微信支付

微信支付

疯子虾夫 支付宝

支付宝

  • 本文作者: 疯子虾夫
  • 本文链接: https://hefengwei.com/archives/1551452332
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
mybatis collection标签的使用
  • 文章目录
  • 站点概览
疯子虾夫

疯子虾夫

24 日志
5 分类
9 标签
RSS
Creative Commons
© 2025 疯子虾夫
由 Halo 强力驱动
|
主题 - NexT.Mist v5.1.4
赣ICP备2024026242号

粤公网安备 44010602005909号