java IO基础

1.IO即BIO

  • Input Output 以内存角度定义
    向内存中写数据Input对应方法read()
    从内存中读取数据Output对应方法write()
image.png

2.阻塞(Block)与非阻塞(Non-Block)的区别

  • 阻塞/非阻塞参照物为IO而非其它
  • 阻塞/非阻塞一般存在于Input读取操作中

BIO

  • 单个通过,出一个进一个


    image.png

NIO

  • 多个同时通过,Buffer对数据进行缓冲.通过轮询消费掉缓冲区中的数据
image.png

3.同步(Synchronization)和异步(Asynchronous)的区别

  • 同步
    一个'流程'开始后必须完成后才可进行下一个'流程'
    线性顺序执行

    image.png

  • 异步
    一个 流程 开始后不管是否结束.立即开启下一 流程

    image.png

  • 生活中的例子
    同步投篮球:一个篮球投出后必须看到篮球是否投中后,才开始下一次投篮
    异步投篮球:一个篮球投出后立即投出下一个不必等到第一次投篮结果确定

4.BIO、 NIO、AIO的区别

名称 是否同步 是否阻塞
BIO 同步 阻塞
NIO 同步 阻塞
AIO 异步 非阻塞
  • JDK1.4以前使用的都是BIO
  • JDK1.4以后NIO出现,IO性能大幅度提升Netty默认使用NIO
  • JDK1.7以后出现AIO(NIO2)由于是事件驱动,操作系统的性能觉定IO的性能
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、BIO、NIO、AIO的概念 BIO,NIO,AIO的理解1BIO,NIO,AIO的理解2概念解释一个IO操作...
    东大俊飞阅读 698评论 2 1
  • 网络/IO基础 1. BIO、NIO、AIO的概念 1.1 同步阻塞BIOBlocking IO是JDK1.4之前...
    熊先森_5094阅读 2,385评论 0 0
  • 注:1)本人非科班出身,文章的来源主要是基于一些能找到的资料,在理解的基础上做一些总结归纳,以期对IO相关的知识体...
    Drew_Zhong阅读 1,039评论 0 2
  • 同/异步 + 阻/非阻塞的性能区别;BIO、NIO、AIO 的区别;理解和实现 NIO 操作 Socket 时的多...
    tanghomvee阅读 2,357评论 1 2
  • 日子浸沁了年轮 一圈一圈 了却了参天
    b24325ed6a77阅读 132评论 0 1