BIO、NIO、AIO的总结
可以简单理解为对操作系统中各种IO模型的封装。
同步与异步的区别:
同步:就是你的程序执行到某一步需要一个返回值,没有这个返回值执行不下去,那么你需要一直等着这个返回值
异步:就是你发出请求后可以切换线程去操作其它事件,比如发邮件
阻塞和非阻塞与同步和异步是一个意思
同步阻塞:烧水时,一直在看着
同步非阻塞:烧水时,时不时的去看一眼
异步非阻塞:当水开时会发出警告,这时你会去把火关上
BIO(同步阻塞式IO)
数据的读取和写入必须在同一个线程中阻塞完成,是一个典型的一请求一应答通信模型
套接字是一种通信机制,它的三个要素是:域+类型+协议
如果假如线程池就成了伪异步IO,就是多个线程发出请求,但是最后是线程池分配线程来处理请求
NIO(同步非阻塞IO)
- NIO是非阻塞的,单线程可以将数据读取到buffer中,在此期间可以去做别的事情,当数据读取到buffer后再来处理数据。
- IO面向流,而NIO面向缓冲区。在面向流的IO中,可以将数据读取到Stream对象中,而NIO可以直接读取到buffer中,NIO中所有的操作都是通过缓冲区进行的
- NIO通过通道(Channel)来进行读写,而IO只能单向读取
- NIO有选择器,选择器用于使用单个线程处理多个通道
- NIO读取数据都是创建一个缓冲区,然后请求通道来进行读取数据
AIO(异步非阻塞IO)
除了AIO其他的IO都是同步的