一、基本概念

  1.BIO:同步阻塞IO

  2.NIO:同步非阻塞IO

  3.AIO:异步阻塞IO

  IO操作包括两部分,发起IO请求、IO数据读写。阻塞非阻塞主要针对线程发起IO请求之后是否立即返回来定义的,立即返回成为称为非阻塞IO,否则为阻塞IO。同步异步针对IO数据读写来定义的,不阻塞线程称为异步IO,否则为同步IO。

  BIO工作原理:线程发起IO请求之后,一直阻塞,直到数据就绪后将数据写入socket空间或从socket空间读取数据。

  NIO工作原理:线程发起IO请求后,立即返回,但需定时轮询去检查数据是够就绪,就绪后才将数据写入socket空间或从socket空间读取数据。

  IO多路复用(NIO):上述NIO实现中,需要用户线程定时轮训,去检查IO数据是否就绪,占用应用程序线程资源。IO多路复用模型中,将检查IO数据是否就绪的任务,交给系统级别的select或模型,由系统进行监控,减轻用户线程负担。

AIO工作原理:线程发起IO请求后立即返回,当数据读写完成后OS通知用户线程。这里对socket空间数据的读写都是由OS完成的。

参考链接:https://www.cnblogs.com/aspirant/p/6877350.html?utm_source=itdadao&utm_medium=referral

     https://my.oschina.net/ljhlgj/blog/1811319

      https://www.jianshu.com/p/ef418ccf2f7d

https://segmentfault.com/a/1190000037714804

最新文章

  1. Android studio .9图片造成的错误总结
  2. dede完美分页样式
  3. STM32内存跟FLASH问题
  4. urllib3 PoolManager
  5. RMAN 备份与恢复深入解析(二)
  6. hdoj 2544 最短路【dijkstra or spfa】
  7. 【原】计算机Tools vs 学习资料
  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计
  9. DooDigestAuth php(后台)授权管理类 web浏览器授权
  10. Android 原生listview item伸展收缩效果
  11. JSP标签库
  12. go get 代理设置
  13. hibernate总结-持续更新
  14. 《吸血鬼日记》(The Vampire Diaries)经典台词
  15. hdu 5480(前缀和)
  16. Chorme浏览器渲染MathJax时出现竖线的解决方法
  17. ppt提取文字
  18. ORM的单表操作
  19. CNN卷积层:ReLU函数
  20. Redis went away

热门文章

  1. [题解]UVA10054 The Necklace
  2. 拥有自助式BI要摒弃传统BI?
  3. Docker入坑系列(二)
  4. XML序列化反序列化
  5. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1
  6. JZ-047-求 1+2+3+...+n
  7. svelte组件:Svelte3自定义Navbar+Tabbr组件|svelte自定义插件
  8. PHP防止订单超卖,秒杀,限购,PHP高并发防止超卖代码实践
  9. tip多文件上传(自找)
  10. Django-模板布局