BIO、NIO、AIO
BIO通信:传统阻塞型,一个线程负责连接,根据请求数创建相同数量的线程来响应、一请求一应答、缺乏弹性伸缩能力,容易宕机
伪异步IO通信:线程池负责连接、M请求N应答、线程数可控因而不会宕机(线程池阻塞)
NIO通信:(同步非阻塞,改进了BIO)缓冲区Buffer、通道Channel、多路复用器Selector
AIO通信:(异步非阻塞,改进了NIO)连接注册读写事件和回调函数、读写方法异步,主动通知程序
同步与异步
同步: 同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。
异步: 异步就是发起一个调用后,立刻得到被调用者的回应表示已接收到请求,但是被调用者并没有返回结果,此时我们可以处理其他的请求,被调用者通常依靠事件,回调等机制来通知调用者其返回结果。
同步和异步的区别最大在于异步的话调用者不需要等待处理结果,被调用者会通过回调等机制来通知调用者其返回结果。
阻塞和非阻塞
阻塞: 阻塞就是发起一个请求,调用者一直等待请求结果返回,也就是当前线程会被挂起,无法从事其他任务,只有当条件就绪才能继续。
非阻塞: 非阻塞就是发起一个请求,调用者不用一直等着结果返回,可以先去干其他事情。
多路复用:I/O多路复用,I/O就是指的我们网络I/O,多路指多个TCP连接(或多个Channel),复用指复用一个或少量线程。串起来理解就是很多个网络I/O复用一个或少量的线程来处理这些连接。