BIO (Blocking I/O):同步阻塞I/O模式。

NIO (New I/O):同步非阻塞模式。

AIO (Asynchronous I/O):异步非阻塞I/O模型。

先看阻塞和非阻塞的区别,以烧水为例:

阻塞VS非阻塞:人是否坐在水壶前面一直等。

同步VS异步:水壶是不是在水烧开之后主动通知人。

再加上同步、异步,有如下三种情况:

1.同步阻塞模式:我们的工作模式是先来到厨房,开始烧水,并坐在水壶面前一直等着水烧开。

2.同步非阻塞模式:我们的工作模式是先来到厨房,开始烧水,但是我们不一直坐在水壶前面等,而是回到客厅看电视,然后每隔1分钟左右到厨房看一下水有没有烧开。

3.异步非阻塞I/O模型:我们的工作模式是先来到厨房,开始烧水,我们不一直坐在水壶前面等水烧开,也不隔一段时间去看一下,而是在客厅看电视,水壶上面有个开关,水烧开之后他会通知我。

由此,如果水很快烧开,比如只用1秒钟,那么第1种模式,就非常简单和快速了,一气呵成。

如果水需要1分钟左右烧开,那么第1种就需要一直守着水壶,期间无法做其他的事,第2种模式就比第一种轻松。

如果水需要10分钟烧开,那么第1种就非常不轻松了,第二种就需要来回检查水是否烧开了,来回次数比较多,而且可能已经烧开了,但却不知道,存在溢出的可能。

第三种此值就很方便了,不需要多次往返检查,只需要接收水壶发出的通知,效率大大的提高了。

最新文章

  1. 记录一次bug解决过程:else未补全导致数据泄露和代码优化
  2. java web学习总结(十一) -------------------基本概念使用Cookie进行会话管理
  3. [python学习] 语言基础—排序函数(sort()、sorted()、argsort()函数)
  4. 相识不易,要懂珍惜----------Spring Mvc
  5. Windows 7 Shortcuts (完整兼具分类有序,想我所想,赞!)
  6. Linux +apache+fastcgi运行c/c++
  7. My-sql #1045 - Access denied for user 'root'@'localhost' (using password: NO)
  8. Linux sed命令在指定行前后添加内容
  9. BeautifulSoup解析非标准HTML的问题
  10. netbeans 将项目打包生成单个可执行的 jar
  11. JavaScript作用域问题
  12. JDBC访问数据库的一些小技巧
  13. mpvue——API请求封装(小程序原生)
  14. shell-特殊变量列表
  15. C++使用指针的优点
  16. Zeu.js
  17. Retrofit 代理模式
  18. FastReport报表打印总页数的问题?
  19. Apache CLI Demo
  20. Dalvik虚拟机java方法执行流程和Method结构体分析

热门文章

  1. Daily Scrum 12/9/2015
  2. Django系列操作
  3. 13. 罗马数字转整数----LeetCode
  4. 使用GML的八方向自动寻路
  5. css 样式中 margin padding和top类定位的区别
  6. C++基础 学习笔记五:重载之运算符重载
  7. SpringBoot+Netty+WebSocket实现实时通信
  8. 20199326《Linux内核原理与分析》第十二周作业
  9. [Windows] 如何用编程的方式格式化硬盘
  10. 【EditPlus】参数设置