IO操作:同步,异步,阻塞,非阻塞
来源:互联网 发布:数字摇号软件 编辑:程序博客网 时间:2024/05/16 17:51
异步 :使用异步I/O时,将I/O读写委托给内核处理
Java对BIO、NIO、AIO的支持:
BIO :同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
NIO :同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
AIO :异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,
BIO、NIO、AIO适用场景分析:
BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。
阻塞式I/O;
非阻塞式I/O;
I/O复用(select,poll,epoll...);
信号驱动式I/O(SIGIO);
异步I/O(POSIX的aio_系列函数);
同步I/O操作:导致请求进程阻塞,直到I/O操作完成;
异步I/O操作:不导致请求进程阻塞。
阻塞,非阻塞:进程/线程要访问的数据是否就绪,进程/线程是否需要等待;
同步,异步:访问数据的方式,同步需要主动读写数据,在读写数据的过程中还是会阻塞;异步只需要I/O操作完成的通知,并不主动读写数据,由操作系统内核完成数据的读写。
转载自:http://yaocoder.blog.51cto.com/2668309/1308899
- IO操作:同步,异步,阻塞,非阻塞
- IO - 同步,异步,阻塞,非阻塞
- IO - 同步,异步,阻塞,非阻塞
- [zz]IO - 同步,异步,阻塞,非阻塞
- io的同步/异步,阻塞/非阻塞
- IO - 同步,异步,阻塞,非阻塞
- io-同步 异步 阻塞 非阻塞
- IO - 同步,异步,阻塞,非阻塞
- IO - 同步,异步,阻塞,非阻塞
- IO - 同步,异步,阻塞,非阻塞
- IO概念---同步/异步、阻塞/非阻塞
- IO - 同步,异步,阻塞,非阻塞
- IO - 同步,异步,阻塞,非阻塞
- IO - 同步,异步,阻塞,非阻塞
- IO 同步 异步 阻塞 非阻塞
- IO - 同步,异步,阻塞,非阻塞【转】
- IO - 同步,异步,阻塞,非阻塞
- IO - 同步,异步,阻塞,非阻塞
- hbase报错Could not initialize class org.apache.hadoop.hbase.protobuf.ProtobufUtil
- 苹果appstore加急审核方法
- ubuntu环境下Pytorch安装及No module named 'torch._C'问题解决
- OpenGL学习:坐标变换(2)-视变换(view transformation)
- 精确线搜索——抛物线法
- IO操作:同步,异步,阻塞,非阻塞
- 使用 HTTP 访问 API
- SeqGAN——对抗思想与增强学习的碰撞
- 线程和进程
- Hibernate之ID生成策略—联合主键
- linux环境下配置mysql双主复制
- 字典序排序算法解析
- PHP filter初学
- 【Android】推荐一些学安卓经常浏览的网站