zoukankan      html  css  js  c++  java
  • Java面试BIO,NIO,AIO 的区别

    既然你能看到这,说明你已经有JAVA基础了,不然咋回去面试

    同步&异步, 阻塞&非阻塞  基本了解

    • 同步(阻塞): 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。 

    • 异步(非阻塞): 异步就是发起一个调用后,立刻得到被调用者的回应表示已接收到请求,但是被调用者并没有返回结果,此时我们可以处理其他的请求,被调用者通常依靠事件,回调等机制来通知调用者其返回结果

    BIO: (Blocking I/O)  - 阻塞IO 

    也叫传统IO

    1) 先将文件内容从磁盘中拷贝到操作系统buffer

    2) 再从操作系统buffer 拷贝到  程序应用(应用层)buffer

    3) 从程序buffer拷贝到socket buffer

    4) 从socket buffer拷贝到协议引擎.

    传统IO慢的原因是因为,数据捣腾过好几遍,才走到socket中

    NIO (New I/O)   - 非阻塞IO

    nio 是New IO 的简称,在jdk1.4 里提供的新api 。Sun 官方标榜的特性如下: 为所有的原始类型提供(Buffer)缓存支持。字符集编码解码解决方案。 Channel :一个新的原始I/O 抽象。 支持锁和内存映射文件的文件访问接口。 提供多路(non-bloking) 非阻塞式的高伸缩性网络I/O

    NIO不经过应用层的缓存,数据直接放在操作系统的缓存,应用层只是直接发送指令,让操作系统Read buffer 直接写到Socket Buffer .少了内核到应用层之间过渡。

     

    AIO (Asynchronous I/O) - 异步IO

    JDK1.7里面叫AIO, JDK1.5叫NIO,AIO才叫做异步IO,NIO其实并不是真正意义上的异步IO,NIO只是非阻塞IO。

    AIO连系统缓存buffer都省了,在外层建立NMAP的映射,数据地址用一个内存地址,地址不需要倒腾复制。直接读进来直接出去使用。

    推荐学习资料:

    netty权威指南 (会把NIO,AIO原理讲下)

    netty in action

  • 相关阅读:
    Windows下分布式缓存Memcached参数帮助文档
    十条不错的编程观点
    转载志凡:网站技术分析报告之——开心网(kaixin.com)
    转载:由图片SEO想起
    Memcache基础教程
    【C#学习笔记】构造函数重载,构造函数相互调用,静态构造函数
    【C#学习笔记】单精度和双精度浮点型操作留意。
    VB进行子类化
    通过 Apache 配置 Rewrite 支持 .htaccess
    【C#学习笔记】各种定义方法的例子
  • 原文地址:https://www.cnblogs.com/codelives/p/13364962.html
Copyright © 2011-2022 走看看