JAVA中IO同步、异步、阻塞、非阻塞
来源:互联网 发布:追求卓越 知乎 编辑:程序博客网 时间:2024/06/04 19:31
转载自http://stevex.blog.51cto.com/4300375/1284437
一、同步与异步
同步和异步是针对应用程序和内核的交互而言的。
同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪;
而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。
二、阻塞和非阻塞
阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式。
阻塞方式下读取或者写入函数将一直等待;
而非阻塞方式下,读取或者写入函数会立即返回一个状态值。
所以,IO操作可以分为3类:同步阻塞(即早期的IO操作)、同步非阻塞(NIO)、异步(AIO)。
三、同步阻塞(BIO)、同步非阻塞(NIO)、异步非阻塞(AIO)
1.同步阻塞BIO
在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。
JAVA传统的IO模型属于此种方式。 适用于并发量要求不高的场景。
2.同步非阻塞NIO
在此种方式下,用户进程发起一个IO操作以后边可返回做其它事情,但是用户进程需要时不时的询问IO操作是否就绪,这就要求用户进程不停的去询问,从而引入不必要的CPU资源浪费。
其中目前JAVA的NIO就属于同步非阻塞IO。 适用于并发量要求比较高的场景。
3.异步非阻塞AIO
此种方式下是指应用发起一个IO操作以后,不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序。
发展还不是很成熟。
阅读全文
0 0
- IO中同步,异步,阻塞,非阻塞
- JAVA中IO同步、异步、阻塞、非阻塞
- Java IO:阻塞/非阻塞式IO、同步/异步IO
- Java IO:阻塞/非阻塞式IO、同步/异步IO
- java 同步阻塞io和异步非阻塞io
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- IO中同步、异步与阻塞、非阻塞的区别
- P1018 乘积最大
- 怎样判断NaN
- 计算机视觉牛人博客和代码汇总(全)
- IDEA+Maven+Embedded Jetty+Jersey构建Restful服务并打包成jar包发布
- 百钱百鸡
- JAVA中IO同步、异步、阻塞、非阻塞
- sklearn、TensorFlow、keras模型保存与读取
- android网络请求组件(一)OkHttp3的封装使用
- perl 连接informix
- 基于vue的移动端图片裁剪压缩处理
- either "to" is duplicate or "" is a garbage的解决
- HDU1089-1096输入输出基础题组
- Time To Get Up(枚举)
- Oracle Net Manager 服务命名配置以及用PL/SQL 登陆数据库