1.IO即BIO
-
Input Output
以内存角度定义
向内存中写数据Input
对应方法read()
从内存中读取数据Output
对应方法write()
2.阻塞(Block)与非阻塞(Non-Block)的区别
- 阻塞/非阻塞参照物为IO而非其它
- 阻塞/非阻塞一般存在于
Input
读取操作中
BIO
-
单个通过,出一个进一个
image.png
NIO
- 多个同时通过,Buffer对数据进行缓冲.通过轮询消费掉缓冲区中的数据
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的性能
网友评论